github.com/walkingsparrow/docker@v1.4.2-0.20151218153551-b708a2249bfa/api/client/load.go (about)

     1  package client
     2  
     3  import (
     4  	"io"
     5  	"os"
     6  
     7  	Cli "github.com/docker/docker/cli"
     8  	flag "github.com/docker/docker/pkg/mflag"
     9  )
    10  
    11  // CmdLoad loads an image from a tar archive.
    12  //
    13  // The tar archive is read from STDIN by default, or from a tar archive file.
    14  //
    15  // Usage: docker load [OPTIONS]
    16  func (cli *DockerCli) CmdLoad(args ...string) error {
    17  	cmd := Cli.Subcmd("load", nil, Cli.DockerCommands["load"].Description, true)
    18  	infile := cmd.String([]string{"i", "-input"}, "", "Read from a tar archive file, instead of STDIN")
    19  	cmd.Require(flag.Exact, 0)
    20  	cmd.ParseFlags(args, true)
    21  
    22  	var input io.Reader = cli.in
    23  	if *infile != "" {
    24  		file, err := os.Open(*infile)
    25  		if err != nil {
    26  			return err
    27  		}
    28  		defer file.Close()
    29  		input = file
    30  	}
    31  
    32  	responseBody, err := cli.client.ImageLoad(input)
    33  	if err != nil {
    34  		return err
    35  	}
    36  	defer responseBody.Close()
    37  
    38  	_, err = io.Copy(cli.out, responseBody)
    39  	return err
    40  }