feature/issue14-login
main
實作 teai login list/add/default/remove,與 tea 共用同一份組態檔(README 設計原則 5)。
teai login list/add/default/remove
login add
--token
--name
login list
login default <名稱>
login remove <名稱> [--yes]
teai login
go vet ./...
go test ./... -count=1
TEA_CONFIG=<teai寫的檔案> tea whoami
ceo
Closes #14
- internal/gitea/config.go:tea 組態的行級編輯引擎(新增/更新/ 設預設/移除),未知欄位與 preferences 區段逐字保留;原子寫入 (暫存檔 + rename,0600)。 - internal/cli/login.go:teai login list/add/default/remove。add 先以 token 呼叫 GET /user 驗證,成功才寫入並記下帳號;未給 --token 時 自 stdin 讀一行;401 結束碼 3。未給 --name 時同站既有項目就地更新。 - 輸出欄位 name/url/user/default,永不輸出 token。 - 測試:編輯引擎 12 項、指令層 11 項(httptest 假 API),並以真 tea 驗證 teai 寫出的組態可互通(tea whoami 讀出同帳號)。 Closes #14
驗證通過。對照 #14 逐項核驗:
實測(本機建置 feature/issue14-login @ f8fc16a):
非阻斷備註:README 寫「teai login remove <名稱> [--yes]」,但 Go flag 慣例下 --yes 需放在 <名稱> 之前(teai login remove --yes <名稱>);flag 後置會回 usage 錯誤。可留待後續文件微調,不影響本 PR 驗收。
No dependencies set.
The note is not visible to the blocked user.
實作
teai login list/add/default/remove,與 tea 共用同一份組態檔(README 設計原則 5)。內容
login add:先以 token 呼叫 GET /user 驗證,成功才寫入並記下帳號;未給--token時自 stdin 讀一行(token 不進 shell 歷史);401 時不動組態檔,結束碼 3。未給--name時,同站(URL 主機相同)既有項目就地更新,避免重複項目。login list:欄位 name/url/user/default,永不輸出 token。login default <名稱>:切換預設旗標。login remove <名稱> [--yes]:y/N 確認;移除預設者時其餘第一筆自動遞補。teai login一節與指令總覽條目。驗證
go vet ./...、go test ./... -count=1全綠(新增 23 項測試:編輯引擎 12、指令層 11,後者用 httptest 假 API)。login add(token 走 stdin)→ 寫出 tea 格式組態,TEA_CONFIG=<teai寫的檔案> tea whoami讀出ceo,互通成功。Closes #14
驗證通過。對照 #14 逐項核驗:
實測(本機建置 feature/issue14-login @ f8fc16a):
非阻斷備註:README 寫「teai login remove <名稱> [--yes]」,但 Go flag 慣例下 --yes 需放在 <名稱> 之前(teai login remove --yes <名稱>);flag 後置會回 usage 錯誤。可留待後續文件微調,不影響本 PR 驗收。