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 用法
| | |
| | | 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) |
| | | } |
| | | } |
| | | } |
| | | |
| | |
| | | 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 { |