#!/usr/bin/env bash set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" SETUP_DIR="${SCRIPT_DIR}/scripts/setup" # shellcheck source=scripts/setup/lib.sh . "${SETUP_DIR}/lib.sh" # shellcheck source=scripts/setup/preflight.sh . "${SETUP_DIR}/preflight.sh" # shellcheck source=scripts/setup/init-layout.sh . "${SETUP_DIR}/init-layout.sh" # shellcheck source=scripts/setup/repo-status.sh . "${SETUP_DIR}/repo-status.sh" # shellcheck source=scripts/setup/deploy-business.sh . "${SETUP_DIR}/deploy-business.sh" # shellcheck source=scripts/setup/domain-https.sh . "${SETUP_DIR}/domain-https.sh" # shellcheck source=scripts/setup/emqx.sh . "${SETUP_DIR}/emqx.sh" # shellcheck source=scripts/setup/backup.sh . "${SETUP_DIR}/backup.sh" # shellcheck source=scripts/setup/restore.sh . "${SETUP_DIR}/restore.sh" # shellcheck source=scripts/setup/rollback.sh . "${SETUP_DIR}/rollback.sh" # shellcheck source=scripts/setup/diagnose.sh . "${SETUP_DIR}/diagnose.sh" print_header() { echo "自助棋牌室系统部署菜单 ${QIPAI_DEPLOY_VERSION}" echo "生产目录: ${APP_ROOT}" echo "固定 API: ${QIPAI_API_ORIGIN}" echo } pause_menu() { echo printf "按回车返回菜单..." read -r _ || true } run_action() { local title="$1" shift echo echo "== ${title} ==" "$@" pause_menu } show_status() { qipai_print_context qipai_preflight || true qipai_repo_status || true if [ -f "$(qipai_current_release_file)" ]; then qipai_info "current release manifest: $(qipai_current_release_file)" cat "$(qipai_current_release_file)" else qipai_warn "current release manifest not found" fi } show_mqtt_status() { qipai_emqx_status } show_https_status() { qipai_domain_https_status } main_menu() { while true; do print_header echo "1. 首次安装 / 初始化目录" echo "2. 更新业务服务 / 生成发布清单" echo "3. 安装或检查 EMQX" echo "4. 配置域名与 HTTPS / 状态检查" echo "5. 查看状态" echo "6. 备份" echo "7. 恢复" echo "8. 回滚" echo "9. 诊断" echo "0. 退出" printf "请选择: " read -r choice case "${choice}" in 1) run_action "首次安装 / 初始化目录" qipai_init_layout ;; 2) run_action "更新业务服务 / 生成发布清单" qipai_deploy_business ;; 3) run_action "安装或检查 EMQX" show_mqtt_status ;; 4) run_action "配置域名与 HTTPS / 状态检查" show_https_status ;; 5) run_action "查看状态" show_status ;; 6) run_action "备份" qipai_backup ;; 7) run_action "恢复" qipai_restore ;; 8) run_action "回滚" qipai_rollback ;; 9) run_action "诊断" qipai_diagnose ;; 0) exit 0 ;; *) echo "无效选项"; pause_menu ;; esac echo done } if [ "${1:-}" = "--preflight" ]; then qipai_preflight elif [ "${1:-}" = "--status" ]; then show_status elif [ "${1:-}" = "--https" ]; then show_https_status elif [ "${1:-}" = "--mqtt" ]; then show_mqtt_status elif [ "${1:-}" = "--diagnose" ]; then qipai_diagnose else main_menu "$@" fi