github.com/cloud-foundations/dominator@v0.0.0-20221004181915-6e4fee580046/lib/flags/commands/impl.go (about) 1 package commands 2 3 import ( 4 "flag" 5 "fmt" 6 "io" 7 8 "github.com/Cloud-Foundations/Dominator/lib/log" 9 ) 10 11 func printCommands(writer io.Writer, commands []Command) { 12 for _, command := range commands { 13 if command.Args == "" { 14 fmt.Fprintln(writer, " ", command.Command) 15 } else { 16 fmt.Fprintln(writer, " ", command.Command, command.Args) 17 } 18 } 19 } 20 21 func runCommands(commands []Command, printUsage func(), 22 logger log.DebugLogger) int { 23 numCommandArgs := flag.NArg() - 1 24 for _, command := range commands { 25 if flag.Arg(0) == command.Command { 26 if numCommandArgs < command.MinArgs || 27 (command.MaxArgs >= 0 && 28 numCommandArgs > command.MaxArgs) { 29 printUsage() 30 return 2 31 } 32 if err := command.CmdFunc(flag.Args()[1:], logger); err != nil { 33 fmt.Fprintln(flag.CommandLine.Output(), err) 34 return 1 35 } 36 return 0 37 } 38 } 39 printUsage() 40 return 2 41 }