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