github.com/a4a881d4/docker@v1.9.0-rc2/api/client/export.go (about)

     1  package client
     2  
     3  import (
     4  	"errors"
     5  	"os"
     6  
     7  	Cli "github.com/docker/docker/cli"
     8  	flag "github.com/docker/docker/pkg/mflag"
     9  )
    10  
    11  // CmdExport exports a filesystem as a tar archive.
    12  //
    13  // The tar archive is streamed to STDOUT by default or written to a file.
    14  //
    15  // Usage: docker export [OPTIONS] CONTAINER
    16  func (cli *DockerCli) CmdExport(args ...string) error {
    17  	cmd := Cli.Subcmd("export", []string{"CONTAINER"}, Cli.DockerCommands["export"].Description, true)
    18  	outfile := cmd.String([]string{"o", "-output"}, "", "Write to a file, instead of STDOUT")
    19  	cmd.Require(flag.Exact, 1)
    20  
    21  	cmd.ParseFlags(args, true)
    22  
    23  	var (
    24  		output = cli.out
    25  		err    error
    26  	)
    27  	if *outfile != "" {
    28  		output, err = os.Create(*outfile)
    29  		if err != nil {
    30  			return err
    31  		}
    32  	} else if cli.isTerminalOut {
    33  		return errors.New("Cowardly refusing to save to a terminal. Use the -o flag or redirect.")
    34  	}
    35  
    36  	image := cmd.Arg(0)
    37  	sopts := &streamOpts{
    38  		rawTerminal: true,
    39  		out:         output,
    40  	}
    41  	if _, err := cli.stream("GET", "/containers/"+image+"/export", sopts); err != nil {
    42  		return err
    43  	}
    44  
    45  	return nil
    46  }