From a8c0208903647e74d99f4b7c49f46b88e629f4ac Mon Sep 17 00:00:00 2001 From: Jason Shepherd Date: Tue, 31 Mar 2015 17:11:03 +1000 Subject: [PATCH] adding nicer help when missing arguments (#11858) Signed-off-by: Jason Shepherd --- mflag/flag.go | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/mflag/flag.go b/mflag/flag.go index ce003cd..2cead9e 100644 --- a/mflag/flag.go +++ b/mflag/flag.go @@ -289,7 +289,8 @@ type FlagSet struct { // Usage is the function called when an error occurs while parsing flags. // The field is a function (not a method) that may be changed to point to // a custom error handler. - Usage func() + Usage func() + ShortUsage func() name string parsed bool @@ -564,6 +565,12 @@ var Usage = func() { PrintDefaults() } +// Usage prints to standard error a usage message documenting the standard command layout +// The function is a variable that may be changed to point to a custom function. +var ShortUsage = func() { + fmt.Fprintf(CommandLine.output, "Usage of %s:\n", os.Args[0]) +} + // FlagCount returns the number of flags that have been defined. func (f *FlagSet) FlagCount() int { return len(sortFlags(f.formal)) } @@ -1073,6 +1080,8 @@ func (cmd *FlagSet) ParseFlags(args []string, withHelp bool) error { } if str := cmd.CheckArgs(); str != "" { cmd.ReportError(str, withHelp) + cmd.ShortUsage() + os.Exit(1) } return nil } @@ -1085,8 +1094,7 @@ func (cmd *FlagSet) ReportError(str string, withHelp bool) { str += ". See '" + os.Args[0] + " " + cmd.Name() + " --help'" } } - fmt.Fprintf(cmd.Out(), "docker: %s\n", str) - os.Exit(1) + fmt.Fprintf(cmd.Out(), "docker: %s.\n", str) } // Parsed reports whether f.Parse has been called.