From 02cf69562ff6219171a016bdd3d110cf817c490b Mon Sep 17 00:00:00 2001 From: Vincent Batts Date: Wed, 19 Mar 2014 14:30:13 -0400 Subject: [PATCH] docker save: --output flag for those that do not care to redirect stdout Docker-DCO-1.1-Signed-off-by: Vincent Batts (github: vbatts) Upstream-commit: 5127732c7911988c81eda7bb31ac77fc1dd36ac2 Component: engine --- components/engine/api/client.go | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/components/engine/api/client.go b/components/engine/api/client.go index 8f515639a7..343a24078c 100644 --- a/components/engine/api/client.go +++ b/components/engine/api/client.go @@ -2044,6 +2044,8 @@ func (cli *DockerCli) CmdCp(args ...string) error { func (cli *DockerCli) CmdSave(args ...string) error { cmd := cli.Subcmd("save", "IMAGE", "Save an image to a tar archive (streamed to stdout)") + outfile := cmd.String([]string{"o", "-output"}, "", "Write to an file, instead of STDOUT") + if err := cmd.Parse(args); err != nil { return err } @@ -2053,8 +2055,16 @@ func (cli *DockerCli) CmdSave(args ...string) error { return nil } + var output io.Writer = cli.out + var err error + if *outfile != "" { + output, err = os.Create(*outfile) + if err != nil { + return err + } + } image := cmd.Arg(0) - if err := cli.stream("GET", "/images/"+image+"/get", nil, cli.out, nil); err != nil { + if err := cli.stream("GET", "/images/"+image+"/get", nil, output, nil); err != nil { return err } return nil