internal/dailyops + cli:日常操作命令 issues/pulls/labels/milestones/releases/repos/api(#8)
- internal/gitea:用戶端支援寫入動詞(DoJSON/DoRaw,共用 do 核心) - internal/dailyops:七組日常操作的 API 層(issues/pulls/labels/milestones/releases/repos/api) - internal/cli:子命令接線;寫入類一律 --yes 閘門(未確認不發請求、exit 2) - teai pulls 相容 #6 工作流用法(無子命令);有子命令走日常操作 - 修正 dispatch:命令旗標(如 --has-work、--comments)不再被誤判為未知全域選項 - teai api 支援 path 內含查詢字串 - 單元測試(httptest 假伺服器)+真實站點交叉驗證(讀取命令輸出對照 Gitea API;寫入回路 create→comment→close 於 alex/.profile 驗證後清理)
This commit is contained in:
@@ -6,7 +6,7 @@ teai 是 Gitea 的命令列(CLI)輔助工具,補足官方 `tea` CLI 缺少
|
||||
|
||||
- **語言:** Go(與 Gitea 本體一致),僅用標準庫,離線可建置
|
||||
- **目標站點:** `https://gitea.alterminal.com`
|
||||
- **狀態:** 基礎建設(#5:internal/gitea)與工作流命令(#6:whoami/orgs/members/mine/pulls/next)已實作;stalled/xrefs(#7)與日常操作命令(#8)進行中
|
||||
- **狀態:** 基礎建設(#5:internal/gitea)、工作流命令(#6:whoami/orgs/members/mine/pulls/next)與日常操作命令(#8:issues/pulls/labels/milestones/releases/repos/api)已實作;stalled/xrefs(#7)進行中
|
||||
|
||||
## 安裝與建置
|
||||
|
||||
@@ -28,7 +28,38 @@ go build -o teai ./cmd/teai
|
||||
3. **機器可讀優先**:預設輸出 JSON;`--output table` 僅供人工抽查。
|
||||
4. **可直接替換原型**:`gitea.py` 的每個子命令在 teai 都有語義相同的對應命令,可交叉驗證、平滑遷移。
|
||||
5. **認證沿用 tea**:讀 `tea` 的登入組態(`TEA_CONFIG` 或 `~/.config/tea/config.yml`),不另建認證體系。
|
||||
6. **安全預設**:本期全部是查詢類(唯讀);寫入類(留言、指派、審核者)不在本期範圍,未來加入時須明確 `--yes`。
|
||||
6. **安全預設**:查詢類唯讀;寫入類命令(#8 起)一律要求明確 `--yes`,未確認時不發出任何請求、不產生任何遠端變更。
|
||||
|
||||
### 日常操作(tea 對等指令;#8)
|
||||
|
||||
issues/pulls/labels/milestones/releases/repos/api 的日常操作,自行實作、輸出一致 JSON、共用同一套認證與全域選項。介面語義以 `tea`/Gitea API 為相容參考。已實作:
|
||||
|
||||
```sh
|
||||
# issues
|
||||
teai issues list --repo <owner>/<repo> [--state open|closed|all]
|
||||
teai issues view --repo <owner>/<repo> <number> [--comments]
|
||||
teai issues create --repo <owner>/<repo> --title … [--body …] [--assignees a,b] --yes
|
||||
teai issues close --repo <owner>/<repo> --yes <number>
|
||||
teai issues comment --repo <owner>/<repo> --body … --yes <number>
|
||||
# pulls(無子命令仍是工作流清單:--mine/--reviewer/--repo)
|
||||
teai pulls list --repo <owner>/<repo> [--state open|closed|all]
|
||||
teai pulls view --repo <owner>/<repo> <number> [--comments]
|
||||
teai pulls create --repo <owner>/<repo> --head <branch> [--base main] --title … [--body …] --yes
|
||||
teai pulls merge --repo <owner>/<repo> [--style merge|rebase|rebase-merge|squash] --yes <number>
|
||||
teai pulls comment --repo <owner>/<repo> --body … --yes <number>
|
||||
# labels/milestones/releases/repos
|
||||
teai labels list --repo <owner>/<repo>
|
||||
teai labels create --repo <owner>/<repo> --name … [--color #RRGGBB] [--description …] --yes
|
||||
teai milestones list --repo <owner>/<repo> [--state open|closed|all]
|
||||
teai milestones create --repo <owner>/<repo> --title … [--description …] [--due RFC3339] --yes
|
||||
teai releases list --repo <owner>/<repo>
|
||||
teai repos list [--org <org>]
|
||||
# 任意 API 呼叫(逃生口)
|
||||
teai api <path> [--method GET|POST|PATCH|DELETE] [--data '<json>'] [--yes]
|
||||
```
|
||||
|
||||
> `--yes` 閘門:所有寫入類命令(create/close/comment/merge/labels create/milestones create/api 非 GET 動詞)未帶 `--yes` 時回 exit 2(用法錯誤),且不發出任何 HTTP 請求。
|
||||
> `teai api` 的 path 內含查詢字串(如 `/repos/a/b/issues?state=closed`)時會正確傳遞。
|
||||
|
||||
### 全域介面
|
||||
|
||||
|
||||
Reference in New Issue
Block a user