119 lines
3.1 KiB
Bash
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
|