Browse code

Handle bad options better

* Do not log bad options error message twice, e.g.:

$ docker run --pouet
flag provided but not defined: --pouet
See 'docker run --help'.
2014/11/05 21:41:23 flag provided but not defined: --pouet

With this patch just the first two lines will be produced.

* Print 'docker' just once when run without a command, e.g.:

$ docker --hel
flag provided but not defined: --hel
See 'docker docker --help'.

Signed-off-by: Michal Minar <miminar@redhat.com>

Michal Minar authored on 2014/11/13 23:39:51
Showing 3 changed files
... ...
@@ -2187,7 +2187,7 @@ func (cli *DockerCli) CmdCreate(args ...string) error {
2187 2187
 
2188 2188
 	config, hostConfig, cmd, err := runconfig.Parse(cmd, args)
2189 2189
 	if err != nil {
2190
-		return err
2190
+		return &utils.StatusError{StatusCode: 1}
2191 2191
 	}
2192 2192
 	if config.Image == "" {
2193 2193
 		cmd.Usage()
... ...
@@ -2223,7 +2223,7 @@ func (cli *DockerCli) CmdRun(args ...string) error {
2223 2223
 
2224 2224
 	config, hostConfig, cmd, err := runconfig.Parse(cmd, args)
2225 2225
 	if err != nil {
2226
-		return err
2226
+		return &utils.StatusError{StatusCode: 1}
2227 2227
 	}
2228 2228
 	if config.Image == "" {
2229 2229
 		cmd.Usage()
... ...
@@ -2511,7 +2511,7 @@ func (cli *DockerCli) CmdExec(args ...string) error {
2511 2511
 
2512 2512
 	execConfig, err := runconfig.ParseExec(cmd, args)
2513 2513
 	if execConfig.Container == "" || err != nil {
2514
-		return err
2514
+		return &utils.StatusError{StatusCode: 1}
2515 2515
 	}
2516 2516
 
2517 2517
 	stream, _, err := cli.call("POST", "/containers/"+execConfig.Container+"/exec", execConfig, false)
... ...
@@ -852,7 +852,11 @@ func Var(value Value, names []string, usage string) {
852 852
 func (f *FlagSet) failf(format string, a ...interface{}) error {
853 853
 	err := fmt.Errorf(format, a...)
854 854
 	fmt.Fprintln(f.Out(), err)
855
-	fmt.Fprintf(f.Out(), "See 'docker %s --help'.\n", f.name)
855
+	if os.Args[0] == f.name {
856
+		fmt.Fprintf(f.Out(), "See '%s --help'.\n", os.Args[0])
857
+	} else {
858
+		fmt.Fprintf(f.Out(), "See '%s %s --help'.\n", os.Args[0], f.name)
859
+	}
856 860
 	return err
857 861
 }
858 862
 
... ...
@@ -25,7 +25,11 @@ func ParseFlags(cmd *flag.FlagSet, args []string, withHelp bool) error {
25 25
 	}
26 26
 	if str := cmd.CheckArgs(); str != "" {
27 27
 		if withHelp {
28
-			str += ". See 'docker " + cmd.Name() + " --help'"
28
+			if os.Args[0] == cmd.Name() {
29
+				str += ". See '" + os.Args[0] + " " + cmd.Name() + " --help'"
30
+			} else {
31
+				str += ". See '" + os.Args[0] + " --help'"
32
+			}
29 33
 		}
30 34
 		fmt.Fprintf(cmd.Out(), "docker: %s.\n", str)
31 35
 		os.Exit(1)