ai_xiaopei
9 days ago f83abc3b530f0dbde23332b0b67b9467a69b952b
fix: 参数不足时显示对应命令的 help

- 修改 Execute() 函数,捕获参数不足的错误
- 使用 cmd.Help() 显示对应命令的用法
- 支持检测 arg(s) 和 required flag 两类错误
- 所有子命令(search/graph/draft 等)参数不足时都会显示 help

测试:
- kb-cli search → 显示 search 用法
- kb-cli graph query → 显示 graph query 用法
- kb-cli draft create → 显示 draft create 用法
3 files modified
16 ■■■■■ changed files
bin/kb-cli patch | view | raw | blame | history
cmd/root.go 13 ●●●●● patch | view | raw | blame | history
cmd/search.go 3 ●●●●● patch | view | raw | blame | history
bin/kb-cli
Binary files differ
cmd/root.go
@@ -63,7 +63,18 @@
    rootCmd.Long = sb.String()
    if err := rootCmd.Execute(); err != nil {
        cobra.CheckErr(err)
        // 如果是参数不足的错误,显示对应命令的 help
        errMsg := err.Error()
        if strings.Contains(errMsg, "arg(s)") || strings.Contains(errMsg, "received") || strings.Contains(errMsg, "required flag") {
            // 找到当前命令并显示其 help
            cmd, _, findErr := rootCmd.Find(os.Args[1:])
            if findErr == nil {
                cmd.Help()
            }
            fmt.Println() // 空行
        } else {
            cobra.CheckErr(err)
        }
    }
}
cmd/search.go
@@ -37,6 +37,9 @@
    searchCmd.Flags().BoolVar(&jsonOut, "json", false, "JSON 格式输出")
    searchCmd.Flags().BoolVar(&withContent, "with-content", false, "返回完整文件内容")
    searchCmd.Flags().BoolVar(&withLinks, "with-links", false, "显示关联文档链接")
    // 参数不足时显示 help
    searchCmd.SetUsageTemplate(searchCmd.Long)
}
func runSearch(cmd *cobra.Command, args []string) error {