Cobra子命令默认调用帮助

Chr*_*her 5 go cobra go-cobra

如果没有传递参数或标志,我希望sub命令打印出Help菜单(main命令默认执行此操作).

例如,没有任何参数或标志的主命令:

chris@pop-os:~$ ./tk
Command line application to deploy

Usage:
  tk [command]

Available Commands:
  addon       Install packages
  cluster     Used to create cloud infrastructures
  help        Help about any command

Flags:
      --config string   config file (default is $HOME/.tk8.yaml)
  -h, --help            help for tk
  -t, --toggle          Help message for toggle

Use "tk [command] --help" for more information about a command.
Run Code Online (Sandbox Code Playgroud)

如果没有输入参数或标志,我想像"tk addon"这样的子命令也返回它自己的帮助菜单,目前它只给出一个空行.

插件代码:

var addonCmd = &cobra.Command{
    Use:   "addon",
Short: "Install addon packages",
Long: `Install additional packages`,
Run: func(cmd *cobra.Command, args []string) {

        }
    },
}
Run Code Online (Sandbox Code Playgroud)

Pav*_*kov 12

可以检查程序传递的参数数量.如果有更多的0args你会做实际的工作,但如果少,那么你只需要显示命令的"帮助".

var addonCmd = &cobra.Command{
    Use:   "addon",
    Short: "Install addon packages",
    Long: `Install additional packages`,
    Run: func(cmd *cobra.Command, args []string) {
        if len(args) == 0 {
            cmd.Help()
            os.Exit(0)
        }
        // do actual work
    },
}
Run Code Online (Sandbox Code Playgroud)