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  }