internal/cli:允許命令旗標與位置參數交錯(#25) #28

Merged
queena merged 1 commits from fix/issue25-interleaved-flags into main 2026-09-10 15:38:37 +08:00
Member

修復 #25:parseFlags 改為先分離旗標與位置參數、再剖析旗標串、最後把位置參數設回 fs.Args,Go 標準 flag「遇位置參數即停止」不再影響「位置參數在前、旗標在後」的用法。

  • teai api --method POST --data '{}' --yes、teai issues/pulls view --repo <編號> --comments 等 README 範例用法恢復正常(原先 exit 2)。
  • login.go/workflow_commands.go 直接呼叫 fs.Parse 的六處改走 parseFlags,全命令行為一致。
  • errHelp(命令 -h/--help)在 exitCodeFor 視為成功,與其既有註解宣稱一致;命令層 -h 結束碼由 1/2 修正為 0。
  • 新增回歸測試 interleaved_flags_test.go:api/issues view/pulls view/stalled/login default/login remove 的「位置參數在前、旗標在後」組合。

驗證:go vet ./... 與 go test ./... 全綠;對真實站點複測 issue 三個重現步驟皆 exit 0,寫入命令未帶 --yes 仍 exit 2。

關聯 issue #25。

修復 #25:parseFlags 改為先分離旗標與位置參數、再剖析旗標串、最後把位置參數設回 fs.Args,Go 標準 flag「遇位置參數即停止」不再影響「位置參數在前、旗標在後」的用法。 - teai api <path> --method POST --data '{}' --yes、teai issues/pulls view --repo <r> <編號> --comments 等 README 範例用法恢復正常(原先 exit 2)。 - login.go/workflow_commands.go 直接呼叫 fs.Parse 的六處改走 parseFlags,全命令行為一致。 - errHelp(命令 -h/--help)在 exitCodeFor 視為成功,與其既有註解宣稱一致;命令層 -h 結束碼由 1/2 修正為 0。 - 新增回歸測試 interleaved_flags_test.go:api/issues view/pulls view/stalled/login default/login remove 的「位置參數在前、旗標在後」組合。 驗證:go vet ./... 與 go test ./... 全綠;對真實站點複測 issue 三個重現步驟皆 exit 0,寫入命令未帶 --yes 仍 exit 2。 關聯 issue #25。
alex added 1 commit 2026-09-10 15:35:26 +08:00
parseFlags 改為先分離旗標與位置參數、再剖析旗標串、最後以第二次
Parse 把位置參數設回 fs.Args;Go 標準 flag 遇位置參數即停止的問題
不再影響「位置參數在前、旗標在後」的用法(teai api --method、
issues/pulls view --comments 等照 README 範例可用了)。

- login.go/workflow_commands.go 直接呼叫 fs.Parse 的六處改走
  parseFlags,行為一致(login default/remove 的名稱也可與旗標交錯)。
- errHelp(命令 -h/--help)在 exitCodeFor 視為成功,與其既有註解
  宣稱一致;命令層 -h 結束碼由 1/2 修正為 0。
- 新增 interleaved_flags_test.go 回歸測試:api/issues view/
  pulls view/stalled/login default/login remove 的交錯組合。
alex requested review from queena 2026-09-10 15:35:32 +08:00
queena approved these changes 2026-09-10 15:38:31 +08:00
queena left a comment
Member

驗證通過。核對如下:

  • 符合 #25 全部要求:parseFlags 先分離旗標與位置參數再剖析,位置參數在前的用法恢復正常;login.go/workflow_commands.go 六處改走 parseFlags;附回歸測試覆蓋 api/issues view/pulls view/stalled/login default/login remove 的交錯組合。
  • go vet ./... 與 go test ./... 全綠;PR 變更檔案通過 gofmt(gofmt 列出的兩檔為 main 既有,非本 PR 引入)。
  • 以 PR head(3ed20b6)建置對真實站點複測:issues view 25 --comments、pulls view 28 --comments、api /version 皆 exit 0;寫入命令未帶 --yes 仍 exit 2(安全預設未破壞);旗標在前的用法不受影響。
  • errHelp 視為成功與既有註解一致,命令層 -h 結束碼修正合理。
驗證通過。核對如下: - 符合 #25 全部要求:parseFlags 先分離旗標與位置參數再剖析,位置參數在前的用法恢復正常;login.go/workflow_commands.go 六處改走 parseFlags;附回歸測試覆蓋 api/issues view/pulls view/stalled/login default/login remove 的交錯組合。 - go vet ./... 與 go test ./... 全綠;PR 變更檔案通過 gofmt(gofmt 列出的兩檔為 main 既有,非本 PR 引入)。 - 以 PR head(3ed20b6)建置對真實站點複測:issues view 25 --comments、pulls view 28 --comments、api /version 皆 exit 0;寫入命令未帶 --yes 仍 exit 2(安全預設未破壞);旗標在前的用法不受影響。 - errHelp 視為成功與既有註解一致,命令層 -h 結束碼修正合理。
queena merged commit 3a587f60ad into main 2026-09-10 15:38:37 +08:00
Sign in to join this conversation.
No Reviewers
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: alterminal/teai#28