1
0
Fork 0
mirror of https://github.com/moby/moby.git synced 2022-11-09 12:21:53 -05:00

Implement docker save with standalone client lib.

Signed-off-by: David Calavera <david.calavera@gmail.com>
This commit is contained in:
David Calavera 2015-12-04 13:14:20 -05:00
parent 37d6fee8cf
commit 373f55eecd
2 changed files with 26 additions and 12 deletions

View file

@ -0,0 +1,20 @@
package lib
import (
"io"
"net/url"
)
// ImageSave retrieves one or more images from the docker host as a io.ReadCloser.
// It's up to the caller to store the images and close the stream.
func (cli *Client) ImageSave(imageIDs []string) (io.ReadCloser, error) {
query := url.Values{
"names": imageIDs,
}
resp, err := cli.GET("/images/get", query, nil)
if err != nil {
return nil, err
}
return resp.body, nil
}

View file

@ -2,7 +2,7 @@ package client
import (
"errors"
"net/url"
"io"
"os"
Cli "github.com/docker/docker/cli"
@ -35,18 +35,12 @@ func (cli *DockerCli) CmdSave(args ...string) error {
}
}
sopts := &streamOpts{
rawTerminal: true,
out: output,
}
v := url.Values{}
for _, arg := range cmd.Args() {
v.Add("names", arg)
}
if _, err := cli.stream("GET", "/images/get?"+v.Encode(), sopts); err != nil {
responseBody, err := cli.client.ImageSave(cmd.Args())
if err != nil {
return err
}
defer responseBody.Close()
return nil
_, err = io.Copy(output, responseBody)
return err
}