diff --git a/commands.go b/commands.go index eb70dc2db5..0d997a9c74 100644 --- a/commands.go +++ b/commands.go @@ -645,30 +645,39 @@ func (cli *DockerCli) CmdInspect(args ...string) error { cmd.Usage() return nil } - fmt.Fprintf(cli.out, "[") - for i, name := range args { - if i > 0 { - fmt.Fprintf(cli.out, ",") - } + + indented := new(bytes.Buffer) + status := 0 + + for _, name := range args { obj, _, err := cli.call("GET", "/containers/"+name+"/json", nil) if err != nil { obj, _, err = cli.call("GET", "/images/"+name+"/json", nil) if err != nil { fmt.Fprintf(cli.err, "No such image or container: %s\n", name) + status = 1 continue } } - indented := new(bytes.Buffer) if err = json.Indent(indented, obj, "", " "); err != nil { fmt.Fprintf(cli.err, "%s\n", err) + status = 1 continue } - if _, err := io.Copy(cli.out, indented); err != nil { - fmt.Fprintf(cli.err, "%s\n", err) - } + indented.WriteString(",") + } + // Remove trailling ',' + indented.Truncate(indented.Len() - 1) + + fmt.Fprintf(cli.out, "[") + if _, err := io.Copy(cli.out, indented); err != nil { + return err } fmt.Fprintf(cli.out, "]") + if status != 0 { + return &utils.StatusError{Status: status} + } return nil }