github.com/insionng/yougam@v0.0.0-20170714101924-2bc18d833463/libraries/cli/category.go (about)

     1  package cli
     2  
     3  type CommandCategories []*CommandCategory
     4  
     5  type CommandCategory struct {
     6  	Name     string
     7  	Commands Commands
     8  }
     9  
    10  func (c CommandCategories) Less(i, j int) bool {
    11  	return c[i].Name < c[j].Name
    12  }
    13  
    14  func (c CommandCategories) Len() int {
    15  	return len(c)
    16  }
    17  
    18  func (c CommandCategories) Swap(i, j int) {
    19  	c[i], c[j] = c[j], c[i]
    20  }
    21  
    22  func (c CommandCategories) AddCommand(category string, command Command) CommandCategories {
    23  	for _, commandCategory := range c {
    24  		if commandCategory.Name == category {
    25  			commandCategory.Commands = append(commandCategory.Commands, command)
    26  			return c
    27  		}
    28  	}
    29  	return append(c, &CommandCategory{Name: category, Commands: []Command{command}})
    30  }