如何将一些全局持久性标志标记为某些Cobra命令隐藏

时间:2017-10-05 17:07:31

标签: go go-cobra

我正在使用Cobra开发一些CLI实用程序。对于我的RootCmd,我设置了一些持久性标志(即也影响所有命令的标志)。但是有些命令没有使用这些标志,所以我想为这些特定命令隐藏它们,因此这些标志不会显示myutil help mycmdmyutil mycmd --help

以下代码片段完成了这项工作,但就我而言,它有点难看并且难以维护:

func init() {
    RootCmd.PersistentFlags().StringVar(&someVar, "some-flag", "", "Nothing to see here, move along.")

    origHelpFunc := TidalCmd.HelpFunc()
    RootCmd.SetHelpFunc(func(cmd *cobra.Command, args []string) {
        if cmd.Name() == "no-flags-cmd" || (cmd.Parent() != nil && cmd.Parent().Name() == "no-flags-cmd") {
            cmd.Flags().MarkHidden("some-flag")
        }
        origHelpFunc(cmd, args)
    })
}

有没有更好的方法来隐藏某些命令的某些全局持久性标志?

0 个答案:

没有答案