refactor(collector): 剪掉臍帶——collector/ 自己就算得出自己的版本號(D95 第一輪②)
leo 2026-08-17:「身為管理者,你要從頭到尾**不要有很多扭曲**,因為你根本不記得
你做的這些扭曲,**每次都要查**,很直接,源碼、產出物,從 stage 到 prod。」
`collector/` 原本要伸手到 repo 根才算得出自己的版本,共四條:
① `daemon-version.py` 讀 `docs-site/src/content/docs/help/changelog.md`
② `daemon-version.py` 讀 `ROOT/DAEMON_LINE`
③ `daemon-version.py` 的原始碼指紋從 repo 根 `git ls-files collector`
④ `changelog-section.sh` 讀 `$REPO_ROOT/docs-site/...` 並 exec
`$REPO_ROOT/installer/scripts/daemon-notes.mjs`
⑤(複驗才發現的第五條)`build-msix.sh` 用 `git rev-parse --show-toplevel`/../../.env
推 InkStoneCo 頂層拿 MS Store Identity
現在全部落在 `collector/` 內部:
· `collector/CHANGELOG.md` ← 新家。**原檔同時裝著兩條版本線**
(桌面版 `v0.18.x` + 雲端引擎 `1.4.x`),已按版號格式拆開;
雲端那 17 段原地不動留在 docs-site,桌面版這 30 段搬過來。
· `collector/DAEMON_LINE` ← 從 repo 根搬進來
· 指紋改以 `collector/` 為根算(`cwd=COLLECTOR`、pathspec `.`)
⇒ 相對路徑前綴變了、而路徑有進雜湊 ⇒ `FINGERPRINT_ALGO` 3→4,
照既有設計讓帳本自動整本作廢重記(不要手改 JSON)
· `daemon-notes.mjs` 實作搬進 `collector/cmd/arcrun-app/`,
`installer/scripts/daemon-notes.mjs` 變薄殼轉呼叫
⇒ **根可以往內伸手,collector 不可以往外伸手**,方向單向
· `build-msix.sh` 改成往上找「帶著那把鍵的 .env」,
leo 08-06「腳本自己去讀不要再問人」原樣保留,但不再綁目錄結構
驗收閘:`collector/check-standalone.sh`——不是 grep,是**行為證明**:
把 collector/ 的檔案單獨複製到 repo 之外的臨時目錄、在那裡 git init,
再跑版本計算與打包前置閘。跑得起來=真的自足。
自己發現並修掉的三件:
· `arcrun-tray/assets/store/` 與 `--setup` 其實還活著(見上一顆 commit)
· 兩支同名的 `daemon-notes.mjs` CLI 守衛比的是**檔名尾綴**
⇒ 兩支一起開火,問雲端版號時 collector 那支先 exit(1),
薄殼根本沒機會查 docs-site。改成比絕對路徑。
· `collector/CHANGELOG.md` 的「怎麼出新版」說明若照抄那行標題,
會被 `daemon-version.py` 的純字串比對當成「有待發佈內容」而誤升版
⇒ 說明裡刻意不寫成真的標題,並把這個邊角寫在檔案裡
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -79,8 +79,25 @@ echo "🏷 msix 版本:${MSIX_VERSION}(來源 ${VERSION_RAW})"
|
||||
# 我卻每次都當成「只有他有」而開口問。**腳本自己去讀,不要再問人。**
|
||||
# (對應鐵律:`system-dev/wiki/credentials-map.md` —— 用任何金鑰前先查那張表;
|
||||
# 查得到就自己拿,不要說「我沒有」。)
|
||||
ENV_FILE="${ENV_FILE:-$(cd "$(dirname "$0")" && git rev-parse --show-toplevel 2>/dev/null)/../../.env}"
|
||||
if [[ -z "${IDENTITY_NAME:-}" && -f "$ENV_FILE" ]]; then
|
||||
#
|
||||
# 🔴 2026-08-18(D95 第一輪):原本是 `git rev-parse --show-toplevel`/../../.env
|
||||
# ——那是**用本 repo 在磁碟上的位置**去推 InkStoneCo 頂層,
|
||||
# collector/ 一旦搬成獨立 repo(或只是被 clone 到別處)就指到不存在的路徑。
|
||||
# 改成**往上找那個帶著這把鍵的 .env**:leo 08-06 的要求原樣保留
|
||||
# (腳本自己去讀、不再問人,金鑰的家仍是頂層那一份),
|
||||
# 但**不再依賴目錄結構長什麼樣**。找不到就照舊落到 PLACEHOLDER 並印警告,
|
||||
# 不會安靜出一顆送不了審的 msix。
|
||||
if [[ -z "${ENV_FILE:-}" ]]; then
|
||||
_d="$(pwd)" # 腳本開頭已 cd 到自己的目錄
|
||||
while [[ "$_d" != "/" ]]; do
|
||||
if [[ -f "$_d/.env" ]] && grep -qE '^MS_STORE_ARCRUN_APP_NAME=' "$_d/.env" 2>/dev/null; then
|
||||
ENV_FILE="$_d/.env"; break
|
||||
fi
|
||||
_d="$(dirname "$_d")"
|
||||
done
|
||||
fi
|
||||
ENV_FILE="${ENV_FILE:-}"
|
||||
if [[ -z "${IDENTITY_NAME:-}" && -n "$ENV_FILE" && -f "$ENV_FILE" ]]; then
|
||||
# 只取這三個鍵,不把整包 .env 灌進環境(其他都是不該碰的金鑰)
|
||||
IDENTITY_NAME="$(grep -E '^MS_STORE_ARCRUN_APP_NAME=' "$ENV_FILE" | cut -d= -f2-)"
|
||||
PUBLISHER="$(grep -E '^MS_STORE_ARCRUN_APP_PUBLISHER=' "$ENV_FILE" | cut -d= -f2-)"
|
||||
|
||||
Reference in New Issue
Block a user