Files

119 lines
3.1 KiB
Bash

#!/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:-}" = "--backup-status" ]; then
qipai_backup_status
elif [ "${1:-}" = "--diagnose" ]; then
qipai_diagnose
else
main_menu "$@"
fi