递归生成golang cobra --帮助文本?

6jygbczu  于 2022-12-07  发布在  Go
关注(0)|答案(1)|浏览(126)

如果我有一个cobra管理的golang应用程序,我可以调用mycommand --help来查看顶级帮助和命令列表,调用mycommand cmd1 --help来查看第一个命令的帮助和命令列表,等等。
是否有一种方法可以使用cobra库一次递归打印所有命令、标志和帮助文本?
https://github.com/spf13/cobra

syqv5f0l

syqv5f0l1#

我能够黑一些东西。这只是一个简单的递归函数,过滤掉一些噪音的命令名称(例如,我跳过自动生成的帮助和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)
}

相关问题