new NonInheritedFlags() which give all flags which were not persisted from a parent command

This commit is contained in:
Eric Paris 2015-02-13 19:45:00 -05:00 committed by spf13
parent b96dd75141
commit f8e1ec56bd
1 changed files with 16 additions and 0 deletions

View File

@ -765,6 +765,22 @@ func (c *Command) InheritedFlags() *flag.FlagSet {
return local return local
} }
// All Flags which were not inherited from parent commands
func (c *Command) NonInheritedFlags() *flag.FlagSet {
c.mergePersistentFlags()
local := flag.NewFlagSet(c.Name(), flag.ContinueOnError)
inheritedFlags := c.InheritedFlags()
c.Flags().VisitAll(func(f *flag.Flag) {
if inheritedFlags.Lookup(f.Name) == nil {
local.AddFlag(f)
}
})
return local
}
// Get the Persistent FlagSet specifically set in the current command // Get the Persistent FlagSet specifically set in the current command
func (c *Command) PersistentFlags() *flag.FlagSet { func (c *Command) PersistentFlags() *flag.FlagSet {
if c.pflags == nil { if c.pflags == nil {