mirror of
https://github.com/moby/moby.git
synced 2022-11-09 12:21:53 -05:00
12a7e78b12
If an error message happens while parsing docker run or docker exec, the message is not being printed out. Docker-DCO-1.1-Signed-off-by: Dan Walsh <dwalsh@redhat.com> (github: rhatdan)
45 lines
1.2 KiB
Go
45 lines
1.2 KiB
Go
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)
|
|
}
|