support for kubernetes contexts was deprecated in docker 20.10 through
b639ea8b89b162c3abe99d3ac90b258c48e2039c, 0793f9639440d8980226485189ce0eb43e0af28b,
and 1d37fb302789c6ce4ba120bc4ad577c92674467f, and removed altoghether in
23.0 through 193ede9b12.
This patch removes the remaining stubs for options that were deprecated
and no longer used.
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
75 lines
1.8 KiB
Go
75 lines
1.8 KiB
Go
package context
|
|
|
|
import (
|
|
"errors"
|
|
"fmt"
|
|
"io"
|
|
"os"
|
|
|
|
"github.com/docker/cli/cli"
|
|
"github.com/docker/cli/cli/command"
|
|
"github.com/docker/cli/cli/context/store"
|
|
"github.com/spf13/cobra"
|
|
)
|
|
|
|
// ExportOptions are the options used for exporting a context
|
|
type ExportOptions struct {
|
|
ContextName string
|
|
Dest string
|
|
}
|
|
|
|
func newExportCommand(dockerCli command.Cli) *cobra.Command {
|
|
return &cobra.Command{
|
|
Use: "export [OPTIONS] CONTEXT [FILE|-]",
|
|
Short: "Export a context to a tar archive FILE or a tar stream on STDOUT.",
|
|
Args: cli.RequiresRangeArgs(1, 2),
|
|
RunE: func(cmd *cobra.Command, args []string) error {
|
|
opts := &ExportOptions{
|
|
ContextName: args[0],
|
|
}
|
|
if len(args) == 2 {
|
|
opts.Dest = args[1]
|
|
} else {
|
|
opts.Dest = opts.ContextName + ".dockercontext"
|
|
}
|
|
return RunExport(dockerCli, opts)
|
|
},
|
|
}
|
|
}
|
|
|
|
func writeTo(dockerCli command.Cli, reader io.Reader, dest string) error {
|
|
var writer io.Writer
|
|
var printDest bool
|
|
if dest == "-" {
|
|
if dockerCli.Out().IsTerminal() {
|
|
return errors.New("cowardly refusing to export to a terminal, please specify a file path")
|
|
}
|
|
writer = dockerCli.Out()
|
|
} else {
|
|
f, err := os.OpenFile(dest, os.O_RDWR|os.O_CREATE|os.O_EXCL, 0o600)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
defer f.Close()
|
|
writer = f
|
|
printDest = true
|
|
}
|
|
if _, err := io.Copy(writer, reader); err != nil {
|
|
return err
|
|
}
|
|
if printDest {
|
|
fmt.Fprintf(dockerCli.Err(), "Written file %q\n", dest)
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// RunExport exports a Docker context
|
|
func RunExport(dockerCli command.Cli, opts *ExportOptions) error {
|
|
if err := store.ValidateContextName(opts.ContextName); err != nil && opts.ContextName != command.DefaultContextName {
|
|
return err
|
|
}
|
|
reader := store.Export(opts.ContextName, dockerCli.ContextStore())
|
|
defer reader.Close()
|
|
return writeTo(dockerCli, reader, opts.Dest)
|
|
}
|