以 npm 安裝並建立 tea-sdlc 指令入口 #26
Notifications
Due Date
No due date set.
Blocks
#27 以 prompt 子指令供應流程正本
plugins/tea-sdlc
#29 以 status 子指令回報安裝與環境現況
plugins/tea-sdlc
Reference: plugins/tea-sdlc#26
Reference in New Issue
Block a user
母議題
#25 — 以 npm 佈署並提供 tea-sdlc 指令
要做出什麼
使用者跑一行
npm i -g https://gitea.jsc.idv.tw/plugins/tea-sdlc.git,終端機就多出一個tea-sdlc指令。這張票不交付任何實際動作,它把「裝得起來、叫得動、參數錯了會好好講」這條路從打包一路貫穿到終端機。tea-sdlc的輸入輸出契約與既有十五支腳本完全一致:只接受具名 flag、輸出單行 JSON{ok, data, error:{code, message}}、exit 0 或 1。差別只在第一個位置參數是子指令——既有的 flag 解析明確拒絕位置參數,所以子指令必須由入口自行取走,其餘 argv 才交出去。四個子指令的名字此時都要認得:
prompt、status由後續票交付,install、uninstall由 #17 交付。在各自被實作之前,叫用它們要回一個明確的「尚未實作」錯誤,而不是崩潰或沉默。打包範圍以白名單決定,不用黑名單。兩者的失敗模式不對稱:白名單漏掉東西會在安裝當下被既有的套件完整性檢查立刻炸出來,黑名單漏掉排除則是沉默地把測試暫存發給使用者。
驗收標準
npm i -g <git url>之後 PATH 上出現可執行的tea-sdlcprivate、新增bin、新增files白名單,且未新增preparedependencies與devDependencies仍然不存在npm pack --dry-run的檔案清單包含prompts/、scripts/、templates/、references/,不包含test/、.tmp/MISSING_SUBCOMMAND+ exit 1UNKNOWN_SUBCOMMAND+ exit 1UNKNOWN_FLAG+ exit 1install、uninstall、prompt、status四個名字都被認得;尚未實作者回明確錯誤碼而非崩潰runBin()測試 helper,以真實子行程執行入口並斷言單行 JSON 與 exit coderunScript()的單行 JSON 斷言未被放寬阻擋於
無,可立即開始
已於 #36(merge commit
dcbd71c)交付。npm i -g兩種情境都實測過:從打包 tarball 安裝時root落在node_modules底下、linked為false;從本地目錄安裝時為 symlink、linked為true,兩種都叫得動tea-sdlc prompt。