Compare commits

9 Commits

Author SHA1 Message Date
Cheng Zhou 2df8d60172 手动选择环境与配置不一致时自动更新 .ctms-env
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-23 22:26:54 +08:00
Cheng Zhou b83c900109 环境菜单标题显示已识别的环境名
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-23 22:23:50 +08:00
Cheng Zhou 20b414e741 环境菜单默认项显示为 dev(默认) 格式,操作菜单移除标签
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-23 22:22:36 +08:00
Cheng Zhou a81647a4f8 环境菜单中对自动识别的默认项标注 [自动]
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-23 22:18:11 +08:00
Cheng Zhou b72b5314a0 环境选择菜单始终显示,.ctms-env 配置作为默认选中项
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-23 22:14:05 +08:00
Cheng Zhou b126a759f0 有 .ctms-env 配置时直接展示部署环境,跳过选择菜单
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-23 22:09:46 +08:00
Cheng Zhou 05cd74fd43 修复滚动更新跳过环境选择的问题
.ctms-env 有配置时不再自动采用,改为作为菜单默认选中项,
用户仍可切换到其他环境。

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-23 22:07:34 +08:00
Cheng Zhou e531ce75f9 Merge branch 'dev'
Storage Persistence Guard / storage-persistence-audit (push) Has been cancelled
Storage Persistence Guard / storage-persistence-audit (pull_request) Has been cancelled
2026-06-23 17:20:57 +08:00
Cheng Zhou 79d2ee344c 加固部署配置与敏感路径拦截
Storage Persistence Guard / storage-persistence-audit (pull_request) Has been cancelled
Storage Persistence Guard / storage-persistence-audit (push) Has been cancelled
2026-06-22 15:35:25 +08:00
+29 -12
View File
@@ -126,9 +126,10 @@ build_env_status() {
select_menu() {
local title="$1"
shift
local default_index="$2"
shift 2
local options=("$@")
local selected=0
local selected="${default_index:-0}"
local key=""
[[ "${#options[@]}" -gt 0 ]] || ctms_fail "菜单没有可选项"
@@ -169,22 +170,38 @@ ctms_config_get() {
}
pick_env() {
local env
local env default_index=0
env="$(ctms_config_get "env" || true)"
if [[ -n "$env" ]]; then
ctms_require_env "$env"
SELECTED_ENV="$env"
return
fi
select_menu "选择环境" \
"dev 本地开发环境 Vite 热加载 / 默认密钥" \
"main 内网测试环境 预发布验证 / 生产模式" \
case "$env" in
main) default_index=1 ;;
release) default_index=2 ;;
esac
local -a opts=(
"dev 本地开发环境 Vite 热加载 / 默认密钥"
"main 内网测试环境 预发布验证 / 生产模式"
"release 生产环境 HTTPS / RSA 密钥"
)
if [[ -n "$env" ]]; then
case "$default_index" in
0) opts[0]="dev(默认) 本地开发环境 Vite 热加载 / 默认密钥" ;;
1) opts[1]="main(默认) 内网测试环境 预发布验证 / 生产模式" ;;
2) opts[2]="release(默认) 生产环境 HTTPS / RSA 密钥" ;;
esac
fi
local menu_title="选择环境"
[[ -n "$env" ]] && menu_title="选择环境 (已识别: ${env}"
select_menu "$menu_title" "$default_index" "${opts[@]}"
case "$SELECTED_INDEX" in
0) SELECTED_ENV="dev" ;;
1) SELECTED_ENV="main" ;;
2) SELECTED_ENV="release" ;;
esac
# 手动选择与配置不一致时更新 .ctms-env
if [[ -n "$env" && "$SELECTED_ENV" != "$env" ]]; then
local file="$ROOT_DIR/.ctms-env"
sed -i.bak "s/^env *=.*/env = $SELECTED_ENV/" "$file" && rm -f "${file}.bak"
ctms_info "已将 .ctms-env 中的环境更新为: $SELECTED_ENV"
fi
}
collect_install_options() {
@@ -224,7 +241,7 @@ pause_return() {
}
interactive_main() {
select_menu "选择操作" \
select_menu "选择操作" "" \
"安装部署 配置环境、构建容器、迁移数据库、健康检查" \
"滚动更新 重建服务、执行迁移、复用安装健康检查" \
"安全卸载 停止并移除容器,保留 .env 与数据文件" \