我正在使用Cobra开发一些CLI实用程序。对于我的RootCmd
,我设置了一些持久性标志(即也影响所有命令的标志)。但是有些命令没有使用这些标志,所以我想为这些特定命令隐藏它们,因此这些标志不会显示myutil help mycmd
或myutil 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)
})
}
有没有更好的方法来隐藏某些命令的某些全局持久性标志?