Просмотр исходного кода

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 10 лет назад
Родитель
Сommit
1d09fc22ca
3 измененных файлов с 13 добавлено и 5 удалено
  1. 3 3
      api/client/commands.go
  2. 5 1
      pkg/mflag/flag.go
  3. 5 1
      utils/flags.go

+ 3 - 3
api/client/commands.go

@@ -2187,7 +2187,7 @@ func (cli *DockerCli) CmdCreate(args ...string) error {
 
 	config, hostConfig, cmd, err := runconfig.Parse(cmd, args)
 	if err != nil {
-		return err
+		return &utils.StatusError{StatusCode: 1}
 	}
 	if config.Image == "" {
 		cmd.Usage()
@@ -2223,7 +2223,7 @@ func (cli *DockerCli) CmdRun(args ...string) error {
 
 	config, hostConfig, cmd, err := runconfig.Parse(cmd, args)
 	if err != nil {
-		return err
+		return &utils.StatusError{StatusCode: 1}
 	}
 	if config.Image == "" {
 		cmd.Usage()
@@ -2511,7 +2511,7 @@ func (cli *DockerCli) CmdExec(args ...string) error {
 
 	execConfig, err := runconfig.ParseExec(cmd, args)
 	if execConfig.Container == "" || err != nil {
-		return err
+		return &utils.StatusError{StatusCode: 1}
 	}
 
 	stream, _, err := cli.call("POST", "/containers/"+execConfig.Container+"/exec", execConfig, false)

+ 5 - 1
pkg/mflag/flag.go

@@ -852,7 +852,11 @@ func Var(value Value, names []string, usage string) {
 func (f *FlagSet) failf(format string, a ...interface{}) error {
 	err := fmt.Errorf(format, a...)
 	fmt.Fprintln(f.Out(), err)
-	fmt.Fprintf(f.Out(), "See 'docker %s --help'.\n", f.name)
+	if os.Args[0] == f.name {
+		fmt.Fprintf(f.Out(), "See '%s --help'.\n", os.Args[0])
+	} else {
+		fmt.Fprintf(f.Out(), "See '%s %s --help'.\n", os.Args[0], f.name)
+	}
 	return err
 }
 

+ 5 - 1
utils/flags.go

@@ -25,7 +25,11 @@ func ParseFlags(cmd *flag.FlagSet, args []string, withHelp bool) error {
 	}
 	if str := cmd.CheckArgs(); str != "" {
 		if withHelp {
-			str += ". See 'docker " + cmd.Name() + " --help'"
+			if os.Args[0] == cmd.Name() {
+				str += ". See '" + os.Args[0] + " " + cmd.Name() + " --help'"
+			} else {
+				str += ". See '" + os.Args[0] + " --help'"
+			}
 		}
 		fmt.Fprintf(cmd.Out(), "docker: %s.\n", str)
 		os.Exit(1)