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 52 return
53 53 fi
54 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 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 66 else
59   - echo " ${key} = (保留用户手填: ${current})"
  67 + echo " ${key} = ${stripped} [保留用户手填,未覆盖派生值 ${newval}]"
60 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 101 echo "derive-gitlab.sh: 从 origin ($URL) 派生 GitLab 凭据:"
64 102 update_field GITLAB_PROJECT_ID "$PROJECT_ID"
65 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 31 # `PRIVATE-TOKEN` 头。v3 token 是全权限、无细粒度 scope)。**无法派生,必须人工填**
32 32 # - GITLAB_PROJECT_ID:A5 从 origin 远程路径自动派生为 URL-encoded 形式(如 `zhuzc/test` → `zhuzc%2Ftest`);
33 33 # 也可手动改成项目数字 ID(GitLab 项目设置页可见)
34   -GITLAB_API_URL=TBD(A5 自动补)
  34 +GITLAB_API_URL='TBD(A5 自动补)'
35 35 GITLAB_TOKEN=【人工填写:GitLab Private Token(Profile → Account → Private token)】
36   -GITLAB_PROJECT_ID=TBD(A5 自动补)
  36 +GITLAB_PROJECT_ID='TBD(A5 自动补)'
... ...