Commit 970bdee333f4e0a5cc66ecb2f88d4c10ca93f676

Authored by zichun
1 parent 21e90b62

update plan phase

skills/plan/downstream-gen/scripts/derive-gitlab.sh
@@ -52,15 +52,53 @@ update_field() { @@ -52,15 +52,53 @@ update_field() {
52 return 52 return
53 fi 53 fi
54 local current=${line#${key}=} 54 local current=${line#${key}=}
55 - if [ -z "$current" ] || [ "$current" = "TBD(A5 自动补)" ]; then 55 + # 剥外层单/双引号再比较,模板里 TBD(A5 自动补) 因含空格/括号必须加引号才能被 source
  56 + local stripped=$current
  57 + case "$stripped" in
  58 + \'*\') stripped=${stripped#\'}; stripped=${stripped%\'} ;;
  59 + \"*\") stripped=${stripped#\"}; stripped=${stripped%\"} ;;
  60 + esac
  61 + if [ -z "$stripped" ] || [ "$stripped" = "TBD(A5 自动补)" ]; then
56 sed -i.bak -E "s|^${key}=.*$|${key}=${newval}|" "$ENV_FILE" && rm -f "${ENV_FILE}.bak" 62 sed -i.bak -E "s|^${key}=.*$|${key}=${newval}|" "$ENV_FILE" && rm -f "${ENV_FILE}.bak"
57 - echo " ${key} = ${newval}" 63 + echo " ${key} = ${newval} [已派生填入]"
  64 + elif [ "$stripped" = "$newval" ]; then
  65 + echo " ${key} = ${newval} [已是派生值,无需更新]"
58 else 66 else
59 - echo " ${key} = (保留用户手填: ${current})" 67 + echo " ${key} = ${stripped} [保留用户手填,未覆盖派生值 ${newval}]"
60 fi 68 fi
61 } 69 }
62 70
  71 +report_token() {
  72 + local key=GITLAB_TOKEN
  73 + local line
  74 + line=$(grep -E "^${key}=" "$ENV_FILE" | head -1)
  75 + if [ -z "$line" ]; then
  76 + echo " ${key} = (.env.local 中无此行,跳过)" >&2
  77 + return
  78 + fi
  79 + local current=${line#${key}=}
  80 + local stripped=$current
  81 + case "$stripped" in
  82 + \'*\') stripped=${stripped#\'}; stripped=${stripped%\'} ;;
  83 + \"*\") stripped=${stripped#\"}; stripped=${stripped%\"} ;;
  84 + esac
  85 + case "$stripped" in
  86 + ""|"【人工填写:"*|"TBD"*)
  87 + echo " ${key} = ${stripped} [待人工填写:GitLab Profile → Account → Private token]"
  88 + ;;
  89 + *)
  90 + local masked
  91 + if [ ${#stripped} -le 8 ]; then
  92 + masked=$(printf '%*s' ${#stripped} '' | tr ' ' '*')
  93 + else
  94 + masked="${stripped:0:4}$(printf '%*s' $((${#stripped}-8)) '' | tr ' ' '*')${stripped: -4}"
  95 + fi
  96 + echo " ${key} = ${masked} [已填入,长度 ${#stripped}]"
  97 + ;;
  98 + esac
  99 +}
  100 +
63 echo "derive-gitlab.sh: 从 origin ($URL) 派生 GitLab 凭据:" 101 echo "derive-gitlab.sh: 从 origin ($URL) 派生 GitLab 凭据:"
64 update_field GITLAB_PROJECT_ID "$PROJECT_ID" 102 update_field GITLAB_PROJECT_ID "$PROJECT_ID"
65 update_field GITLAB_API_URL "$API_URL" 103 update_field GITLAB_API_URL "$API_URL"
66 -echo " GITLAB_TOKEN = (保持占位,请去 GitLab Profile → Account → Private token 手填)" 104 +report_token
skills/plan/skeleton-gen/templates/env-local-template
@@ -31,6 +31,6 @@ TEST_DB_ALLOWED_HOSTS= @@ -31,6 +31,6 @@ TEST_DB_ALLOWED_HOSTS=
31 # `PRIVATE-TOKEN` 头。v3 token 是全权限、无细粒度 scope)。**无法派生,必须人工填** 31 # `PRIVATE-TOKEN` 头。v3 token 是全权限、无细粒度 scope)。**无法派生,必须人工填**
32 # - GITLAB_PROJECT_ID:A5 从 origin 远程路径自动派生为 URL-encoded 形式(如 `zhuzc/test` → `zhuzc%2Ftest`); 32 # - GITLAB_PROJECT_ID:A5 从 origin 远程路径自动派生为 URL-encoded 形式(如 `zhuzc/test` → `zhuzc%2Ftest`);
33 # 也可手动改成项目数字 ID(GitLab 项目设置页可见) 33 # 也可手动改成项目数字 ID(GitLab 项目设置页可见)
34 -GITLAB_API_URL=TBD(A5 自动补) 34 +GITLAB_API_URL='TBD(A5 自动补)'
35 GITLAB_TOKEN=【人工填写:GitLab Private Token(Profile → Account → Private token)】 35 GITLAB_TOKEN=【人工填写:GitLab Private Token(Profile → Account → Private token)】
36 -GITLAB_PROJECT_ID=TBD(A5 自动补) 36 +GITLAB_PROJECT_ID='TBD(A5 自动补)'