如果我有一个 cobra 管理的 golang 应用程序,我可以调用
mycommand --help
查看顶级帮助和命令列表,mycommand cmd1 --help
查看第一个命令的相同内容,等等。
有没有一种方法使用 cobra 库一次性递归打印所有命令、标志和帮助文本?
我能够破解一些东西。这只是一个简单的递归函数,可以通过命令名称过滤掉一些噪音(例如,我跳过自动生成的帮助和 bash 完成命令)
var dumpAllHelp = "dump-all-help"
var recHelpCmd = &cobra.Command{
Use: dumpAllHelp,
Short: "dump all help texts",
Long: "dump all help texts",
Run: func(_ *cobra.Command, _ []string) {
dumpHelp(rootCmd, true)
},
}
func dumpHelp(c *cobra.Command, root bool) {
if !root {
fmt.Println("")
fmt.Println("========================================================")
fmt.Println("")
}
c.Help()
for _, child := range c.Commands() {
if child.Hidden || child.Name() == "completion" || child.Name() == "help" || child.Name() == dumpAllHelp {
continue
}
dumpHelp(child, false)
}
}
func init() {
rootCmd.AddCommand(recHelpCmd)
}