mirror of https://github.com/gogits/gogs.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
44 lines
1.1 KiB
44 lines
1.1 KiB
package cli |
|
|
|
// CommandCategories is a slice of *CommandCategory. |
|
type CommandCategories []*CommandCategory |
|
|
|
// CommandCategory is a category containing commands. |
|
type CommandCategory struct { |
|
Name string |
|
Commands Commands |
|
} |
|
|
|
func (c CommandCategories) Less(i, j int) bool { |
|
return c[i].Name < c[j].Name |
|
} |
|
|
|
func (c CommandCategories) Len() int { |
|
return len(c) |
|
} |
|
|
|
func (c CommandCategories) Swap(i, j int) { |
|
c[i], c[j] = c[j], c[i] |
|
} |
|
|
|
// AddCommand adds a command to a category. |
|
func (c CommandCategories) AddCommand(category string, command Command) CommandCategories { |
|
for _, commandCategory := range c { |
|
if commandCategory.Name == category { |
|
commandCategory.Commands = append(commandCategory.Commands, command) |
|
return c |
|
} |
|
} |
|
return append(c, &CommandCategory{Name: category, Commands: []Command{command}}) |
|
} |
|
|
|
// VisibleCommands returns a slice of the Commands with Hidden=false |
|
func (c *CommandCategory) VisibleCommands() []Command { |
|
ret := []Command{} |
|
for _, command := range c.Commands { |
|
if !command.Hidden { |
|
ret = append(ret, command) |
|
} |
|
} |
|
return ret |
|
}
|
|
|