@@ -128,37 +128,74 @@ env_default() {
128128 printf " %s" " ${value:- $fallback } "
129129}
130130
131- load_existing_env_defaults () {
131+ known_compose_service_exists () {
132+ local compose_file
133+ for compose_file in docker-compose.yml docker-compose.sqlite.yml docker-compose.local.yml docker-compose.sqlite.local.yml; do
134+ [[ -f " $compose_file " ]] || continue
135+ if [[ -n " $( $COMPOSE_CMD -f " $compose_file " ps -q codex2api 2> /dev/null || true) " ]]; then
136+ EXISTING_COMPOSE_FILE=" $compose_file "
137+ return 0
138+ fi
139+ done
140+ return 1
141+ }
142+
143+ detect_deployment_state () {
144+ DEPLOY_ACTION=" full"
145+ DEPLOYMENT_STATE=" first"
146+ DEPLOYMENT_REASON=" 未检测到 .env 或已创建的 compose 服务"
147+ EXISTING_COMPOSE_FILE=" "
148+
132149 if [[ -f " $EXISTING_ENV_FILE " ]]; then
133- success " 检测到已有 .env,将作为交互默认值"
150+ DEPLOYMENT_STATE=" existing"
151+ DEPLOYMENT_REASON=" 检测到已有 .env"
152+ fi
153+
154+ if known_compose_service_exists; then
155+ DEPLOYMENT_STATE=" existing"
156+ if [[ -f " $EXISTING_ENV_FILE " ]]; then
157+ DEPLOYMENT_REASON=" 检测到已有 .env 和 compose 服务 ($EXISTING_COMPOSE_FILE )"
158+ else
159+ DEPLOYMENT_REASON=" 检测到已有 compose 服务 ($EXISTING_COMPOSE_FILE )"
160+ fi
134161 fi
135162}
136163
137- step_existing_deployment_action () {
138- DEPLOY_ACTION=" full"
139- if [[ ! -f " $EXISTING_ENV_FILE " ]]; then
164+ step_deployment_route () {
165+ detect_deployment_state
166+
167+ echo " "
168+ printf " ${BOLD}${CYAN} ━━━ 部署状态检查 ━━━${NC} \n"
169+ echo " "
170+ if [[ " $DEPLOYMENT_STATE " == " first" ]]; then
171+ success " 检测结果: 首次部署"
172+ info " $DEPLOYMENT_REASON "
173+ success " 部署线路: 完整部署向导"
140174 return 0
141175 fi
142176
143- echo " "
144- printf " ${BOLD}${CYAN} ━━━ 已有部署 ━━━${NC} \n"
177+ success " 检测结果: 已有部署"
178+ info " $DEPLOYMENT_REASON "
179+ if [[ -f " $EXISTING_ENV_FILE " ]]; then
180+ success " 已有 .env 将作为交互默认值"
181+ fi
145182 echo " "
146183 echo " 1) 完整部署向导 — 重新确认端口、数据库、密钥等配置"
147184 echo " 2) 仅配置一键更新 — 只切换 Docker socket 挂载并重启服务"
148185 echo " "
149- ask " 请选择 (1 或 2)" " 2" EXISTING_DEPLOY_CHOICE
186+ ask " 请选择部署线路 (1 或 2)" " 2" DEPLOY_ROUTE_CHOICE
150187
151- case " $EXISTING_DEPLOY_CHOICE " in
188+ case " $DEPLOY_ROUTE_CHOICE " in
152189 1|full|deploy)
153190 DEPLOY_ACTION=" full"
154- success " 进入完整部署向导 "
191+ success " 部署线路: 完整部署向导 "
155192 ;;
156193 2|update|socket|docker|watchtower)
157194 DEPLOY_ACTION=" update_options"
158- success " 进入一键更新配置模式 "
195+ success " 部署线路: 仅配置一键更新 "
159196 ;;
160197 * )
161- error " 无效选择: $EXISTING_DEPLOY_CHOICE "
198+ error " 无效选择: $DEPLOY_ROUTE_CHOICE "
162199 ;;
163200 esac
164201}
@@ -812,8 +849,7 @@ main() {
812849 bootstrap_repo " $@ "
813850 preflight
814851 update_repo_code
815- load_existing_env_defaults
816- step_existing_deployment_action
852+ step_deployment_route
817853 if [[ " $DEPLOY_ACTION " == " update_options" ]]; then
818854 run_update_options_only
819855 exit 0
0 commit comments