cli:修正帶旗標命令被全域剖析攔下的阻斷問題(#13 審核)
- parseGlobals 改為抽取式 extractGlobals:只取走已知全域選項,非全域 選項(--has-work/--mine/--reviewer/--repo)原樣交回子命令 flagset, 任何順序(含與全域選項交錯)皆可解析;-- 之後停止抽取。 - runVersion 補參數檢查:version --wat 仍回 exit 2。 - workflow:commentsFor 對 number<=0 視為無留言,不打 API(對齊 gitea.py 在 number 缺漏時跳過留言檢查,避免 issues/0/comments 404 中斷掃描)。 - 新增 internal/cli/workflow_commands_test.go:以注入假 client 的接線層 測試補上 workflow 單元測試覆蓋不到的分派路徑(members --has-work、 pulls --mine/--reviewer/--repo、全域選項交錯、next null/table)。 - README:註明與 gitea.py 的已知輸出差異(空清單 [] vs 無輸出; 全域選項可出現在命令前後)。 實機交叉驗證(alex):members --has-work、pulls --mine/--reviewer、 pulls --repo、next、mine 兩者輸出一致;go vet/test 全綠。
This commit is contained in:
@@ -30,6 +30,11 @@ func init() {
|
||||
// errNoRepoFlag 是 --repo 值格式錯誤。
|
||||
var errNoRepoFlag = errors.New("--repo 需為 owner/repo 形式")
|
||||
|
||||
// newScannerFunc 建立工作流 Scanner;正式環境用 API client。
|
||||
// 宣告為變數讓接線層測試可注入假 client(不走網路),
|
||||
// 彌補 workflow 套件單元測試覆蓋不到 CLI 分派路徑的缺口。
|
||||
var newScannerFunc = newWorkflowClient
|
||||
|
||||
// newWorkflowClient 依全域選項建立 workflow 所需的 API client。
|
||||
func newWorkflowClient(env *Env) (*workflow.Scanner, error) {
|
||||
token, _, err := gitea.ResolveToken(gitea.AuthOptions{
|
||||
@@ -57,7 +62,7 @@ func runWhoami(env *Env, args []string) error {
|
||||
if len(args) != 0 {
|
||||
return &ErrUsage{Msg: "whoami 不接受參數"}
|
||||
}
|
||||
s, err := newWorkflowClient(env)
|
||||
s, err := newScannerFunc(env)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -76,7 +81,7 @@ func runOrgs(env *Env, args []string) error {
|
||||
if len(args) != 0 {
|
||||
return &ErrUsage{Msg: "orgs 不接受參數"}
|
||||
}
|
||||
s, err := newWorkflowClient(env)
|
||||
s, err := newScannerFunc(env)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -105,7 +110,7 @@ func runMembers(env *Env, args []string) error {
|
||||
if fs.NArg() != 0 {
|
||||
return &ErrUsage{Msg: "members 不接受位置參數"}
|
||||
}
|
||||
s, err := newWorkflowClient(env)
|
||||
s, err := newScannerFunc(env)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -125,7 +130,7 @@ func runMine(env *Env, args []string) error {
|
||||
if len(args) != 0 {
|
||||
return &ErrUsage{Msg: "mine 不接受參數"}
|
||||
}
|
||||
s, err := newWorkflowClient(env)
|
||||
s, err := newScannerFunc(env)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -165,7 +170,7 @@ func runPulls(env *Env, args []string) error {
|
||||
}
|
||||
owner, name = parts[0], parts[1]
|
||||
}
|
||||
s, err := newWorkflowClient(env)
|
||||
s, err := newScannerFunc(env)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -198,7 +203,7 @@ func runNext(env *Env, args []string) error {
|
||||
if len(args) != 0 {
|
||||
return &ErrUsage{Msg: "next 不接受參數"}
|
||||
}
|
||||
s, err := newWorkflowClient(env)
|
||||
s, err := newScannerFunc(env)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user