package cli import ( "io/ioutil" "os" "fmt" ) type Command struct { Name string ShortName string Usage string Description string Action func(context *Context) Flags []Flag } func (c Command) Run(ctx *Context) { // append help to flags c.Flags = append( c.Flags, helpFlag{"show help"}, ) set := flagSet(c.Name, c.Flags) set.SetOutput(ioutil.Discard) err := set.Parse(ctx.Args()[1:]) if err != nil { fmt.Println("Incorrect Usage.\n") ShowCommandHelp(ctx, c.Name) fmt.Println("") os.Exit(1) } context := NewContext(ctx.App, set, ctx.globalSet) checkCommandHelp(context, c.Name) c.Action(context) } func (c Command) HasName(name string) bool { return c.Name == name || c.ShortName == name }