如果没有传递参数或标志,我希望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.
我想要子命令,例如" tk addon"如果没有输入参数或标志,也返回它自己的帮助菜单,目前它只给出一个空行。
插件代码:
var addonCmd = &cobra.Command{
Use: "addon",
Short: "Install addon packages",
Long: `Install additional packages`,
Run: func(cmd *cobra.Command, args []string) {
}
},
}
答案 0 :(得分:8)
可以检查程序传递的参数数量。如果有更多0
args你会做实际工作,但如果它少,那么你只需要显示命令的“帮助”。
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
},
}
答案 1 :(得分:2)
我认为最好在PreRunE上进行处理。
var addonCmd = &cobra.Command{
Use: "addon",
Short: "Install addon packages",
Long: `Install additional packages`,
PreRunE: func(cmd *cobra.Command, args []string) error {
if len(args) == 0 {
cmd.Help()
os.Exit(0)
}
return nil
},
Run: func(cmd *cobra.Command, args []string) {
// do actual work
},
}