Merge pull request #346 from codegangsta/category_sort_2

Add option to make categories with command, to display a more structured help
This commit is contained in:
Jesse Szwedko
2016-03-26 15:39:47 -07:00
6 changed files with 158 additions and 8 deletions

14
app.go
View File

@@ -6,6 +6,7 @@ import (
"io/ioutil"
"os"
"path"
"sort"
"time"
)
@@ -34,6 +35,8 @@ type App struct {
HideHelp bool
// Boolean to hide built-in version flag and the VERSION section of help
HideVersion bool
// Populate on app startup, only gettable throught method Categories()
categories CommandCategories
// An action to execute when the bash-completion flag is set
BashComplete func(context *Context)
// An action to execute before any subcommands are run, but after the context is ready
@@ -104,6 +107,12 @@ func (a *App) Run(arguments []string) (err error) {
}
a.Commands = newCmds
a.categories = CommandCategories{}
for _, command := range a.Commands {
a.categories = a.categories.AddCommand(command.Category, command)
}
sort.Sort(a.categories)
// append help to commands
if a.Command(helpCommand.Name) == nil && !a.HideHelp {
a.Commands = append(a.Commands, helpCommand)
@@ -316,6 +325,11 @@ func (a *App) Command(name string) *Command {
return nil
}
// Returnes the array containing all the categories with the commands they contain
func (a *App) Categories() CommandCategories {
return a.categories
}
func (a *App) hasFlag(flag Flag) bool {
for _, f := range a.Flags {
if flag == f {