走通腳本契約:共用函式庫、四層前置檢查與 labels-list #3

Closed
opened 2026-09-17 03:51:17 +00:00 by jiantw83 · 1 comment
Member

母議題

#1 — tea-sdlc:以 tea 驅動 SDLC 全流程的跨平台指令組

要做出什麼

讓第一支腳本從頭到尾跑通,把所有腳本共用的契約一次立好。

使用者在終端執行一支讀取型腳本,拿到單行 JSON;若環境有問題,得到的是一個明確的錯誤碼與「該去哪裡改設定」的指示,而不是後續步驟東一個西一個地失敗。

前置檢查涵蓋四層:執行環境(node/git/tea 是否存在)、Gitea 登入是否有效、帳號對目標 repo 的 issues unit 是否有寫入權、repo 是否已開啟時間追蹤。第三層必須針對 issues unit 實測,不能只看 permissions.push——team 的 unit 權限可以獨立於 repo 的 push 權限。

同時把測試要用的隔離手法立起來:Gitea 呼叫集中在單一函式,測試時指向本機 stub server 錄放請求;git 操作集中在單一執行點,測試在臨時 repo 上跑真實 git。這套手法之後每一支腳本都會沿用。

腳本定位 templates/ 與 references/ 一律從自身檔案位置回推 plugin 根,不依賴 cwd 或環境變數。

驗收標準

  • 共用函式庫提供:Gitea API 呼叫、四層前置檢查、--dry-run、冪等查重、單行 JSON 輸出
  • 所有腳本的輸出格式固定為 {ok, data, error:{code, message}},輸入一律具名 flag
  • 四層前置檢查各自失敗時,回傳可區分的錯誤碼並指出應修改的設定位置;權限檢查針對 issues unit 實測
  • 時間追蹤未開啟時中止,訊息指出 Settings → Advanced Settings → Enable Time Tracker
  • labels-list 可列出目標 repo 的既有標籤,且不具備建立標籤的能力
  • 腳本從自身檔案位置回推 plugin 根來定位 templates/ 與 references/,在任意 cwd 下執行結果相同
  • 測試以子行程執行腳本、比對 stdout 的 JSON 與 exit code;Gitea 以本機 stub server 替身,git 以臨時 repo 跑真實指令

阻擋於

  • #2 — 把模板 scaffold 換成 tea-sdlc 骨架
## 母議題 #1 — tea-sdlc:以 tea 驅動 SDLC 全流程的跨平台指令組 ## 要做出什麼 讓第一支腳本從頭到尾跑通,把所有腳本共用的契約一次立好。 使用者在終端執行一支讀取型腳本,拿到單行 JSON;若環境有問題,得到的是一個明確的錯誤碼與「該去哪裡改設定」的指示,而不是後續步驟東一個西一個地失敗。 前置檢查涵蓋四層:執行環境(node/git/tea 是否存在)、Gitea 登入是否有效、帳號對目標 repo 的 issues unit 是否有寫入權、repo 是否已開啟時間追蹤。第三層必須針對 issues unit 實測,不能只看 `permissions.push`——team 的 unit 權限可以獨立於 repo 的 push 權限。 同時把測試要用的隔離手法立起來:Gitea 呼叫集中在單一函式,測試時指向本機 stub server 錄放請求;git 操作集中在單一執行點,測試在臨時 repo 上跑真實 git。這套手法之後每一支腳本都會沿用。 腳本定位 `templates/` 與 `references/` 一律從自身檔案位置回推 plugin 根,不依賴 cwd 或環境變數。 ## 驗收標準 - [x] 共用函式庫提供:Gitea API 呼叫、四層前置檢查、`--dry-run`、冪等查重、單行 JSON 輸出 - [x] 所有腳本的輸出格式固定為 `{ok, data, error:{code, message}}`,輸入一律具名 flag - [x] 四層前置檢查各自失敗時,回傳可區分的錯誤碼並指出應修改的設定位置;權限檢查針對 issues unit 實測 - [x] 時間追蹤未開啟時中止,訊息指出 Settings → Advanced Settings → Enable Time Tracker - [x] `labels-list` 可列出目標 repo 的既有標籤,且不具備建立標籤的能力 - [x] 腳本從自身檔案位置回推 plugin 根來定位 `templates/` 與 `references/`,在任意 cwd 下執行結果相同 - [x] 測試以子行程執行腳本、比對 stdout 的 JSON 與 exit code;Gitea 以本機 stub server 替身,git 以臨時 repo 跑真實指令 ## 阻擋於 - #2 — 把模板 scaffold 換成 tea-sdlc 骨架
jiantw83 added the ready-for-agent label 2026-09-17 03:51:17 +00:00
jiantw83 added a new dependency 2026-09-17 03:51:37 +00:00
jiantw83 added a new dependency 2026-09-17 03:51:37 +00:00
jiantw83 added a new dependency 2026-09-17 03:51:42 +00:00
Author
Member

由 PR #20 完成並已合併進 master。該 PR 的 commit 訊息漏了 Closes #3,因此未自動關閉,這裡手動補上。

由 PR #20 完成並已合併進 master。該 PR 的 commit 訊息漏了 `Closes #3`,因此未自動關閉,這裡手動補上。
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Reference: plugins/tea-sdlc#3