123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- 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)
- }
|