package utils import ( "fmt" "os" flag "github.com/docker/docker/pkg/mflag" ) // ParseFlags is a utility function that adds a help flag if withHelp is true, // calls cmd.Parse(args) and prints a relevant error message if there are // incorrect number of arguments. It returns error only if error handling is // set to ContinueOnError and parsing fails. If error handling is set to // ExitOnError, it's safe to ignore the return value. // TODO: move this to a better package than utils func ParseFlags(cmd *flag.FlagSet, args []string, withHelp bool) error { var help *bool if withHelp { help = cmd.Bool([]string{"#help", "-help"}, false, "Print usage") } if err := cmd.Parse(args); err != nil { return err } if help != nil && *help { cmd.Usage() // just in case Usage does not exit os.Exit(0) } if str := cmd.CheckArgs(); str != "" { ReportError(cmd, str, withHelp) } return nil } func ReportError(cmd *flag.FlagSet, str string, withHelp bool) { if withHelp { if os.Args[0] == cmd.Name() { str += ". See '" + os.Args[0] + " --help'" } else { str += ". See '" + os.Args[0] + " " + cmd.Name() + " --help'" } } fmt.Fprintf(cmd.Out(), "docker: %s.\n", str) os.Exit(1) }