checking if a flag is 'private' before adding it to the list of flags; this allows for hidden flags

This commit is contained in:
Steve Domino 2015-09-04 16:29:28 -06:00
parent 68f5a81a72
commit 0a7cad51ef

View file

@ -917,12 +917,16 @@ func (c *Command) LocalFlags() *flag.FlagSet {
local := flag.NewFlagSet(c.Name(), flag.ContinueOnError)
c.lflags.VisitAll(func(f *flag.Flag) {
local.AddFlag(f)
if !f.Private {
local.AddFlag(f)
}
})
if !c.HasParent() {
flag.CommandLine.VisitAll(func(f *flag.Flag) {
if local.Lookup(f.Name) == nil {
local.AddFlag(f)
if !f.Private {
local.AddFlag(f)
}
}
})
}
@ -942,7 +946,9 @@ func (c *Command) InheritedFlags() *flag.FlagSet {
if x.HasPersistentFlags() {
x.PersistentFlags().VisitAll(func(f *flag.Flag) {
if inherited.Lookup(f.Name) == nil && local.Lookup(f.Name) == nil {
inherited.AddFlag(f)
if !f.Private {
inherited.AddFlag(f)
}
}
})
}