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 }