Start of category flag support
This adds what I think needs to be done to support categories for flags but we will see if that works. It also forces the scripts to use python2 since they blow up under python3 which is becoming the default python on many linux systems. Small fix to app_test as well so it conforms to the new Flag interface.
This commit is contained in:
43
category.go
43
category.go
@@ -42,3 +42,46 @@ func (c *CommandCategory) VisibleCommands() []Command {
|
||||
}
|
||||
return ret
|
||||
}
|
||||
|
||||
// FlagCategories is a slice of *FlagCategory.
|
||||
type FlagCategories []*FlagCategory
|
||||
|
||||
// FlagCategory is a category containing commands.
|
||||
type FlagCategory struct {
|
||||
Name string
|
||||
Flags Flags
|
||||
}
|
||||
|
||||
func (f FlagCategories) Less(i, j int) bool {
|
||||
return lexicographicLess(f[i].Name, f[j].Name)
|
||||
}
|
||||
|
||||
func (f FlagCategories) Len() int {
|
||||
return len(f)
|
||||
}
|
||||
|
||||
func (f FlagCategories) Swap(i, j int) {
|
||||
f[i], f[j] = f[j], f[i]
|
||||
}
|
||||
|
||||
// AddFlags adds a command to a category.
|
||||
func (f FlagCategories) AddFlag(category string, flag Flag) FlagCategories {
|
||||
for _, flagCategory := range f {
|
||||
if flagCategory.Name == category {
|
||||
flagCategory.Flags = append(flagCategory.Flags, flag)
|
||||
return f
|
||||
}
|
||||
}
|
||||
return append(f, &FlagCategory{Name: category, Flags: []Flag{flag}})
|
||||
}
|
||||
|
||||
// VisibleFlags returns a slice of the Flags with Hidden=false
|
||||
func (c *FlagCategory) VisibleFlags() []Flag {
|
||||
ret := []Flag{}
|
||||
for _, flag := range c.Flags {
|
||||
if !flag.GetHidden() {
|
||||
ret = append(ret, flag)
|
||||
}
|
||||
}
|
||||
return ret
|
||||
}
|
||||
|
Reference in New Issue
Block a user