github.com/cspotcode/docker-cli@v20.10.0-rc1.0.20201201121459-3faad7acc5b8+incompatible/cli/command/context/use.go (about) 1 package context 2 3 import ( 4 "fmt" 5 "os" 6 7 "github.com/docker/cli/cli/command" 8 "github.com/spf13/cobra" 9 ) 10 11 func newUseCommand(dockerCli command.Cli) *cobra.Command { 12 cmd := &cobra.Command{ 13 Use: "use CONTEXT", 14 Short: "Set the current docker context", 15 Args: cobra.ExactArgs(1), 16 RunE: func(cmd *cobra.Command, args []string) error { 17 name := args[0] 18 return RunUse(dockerCli, name) 19 }, 20 } 21 return cmd 22 } 23 24 // RunUse set the current Docker context 25 func RunUse(dockerCli command.Cli, name string) error { 26 if err := validateContextName(name); err != nil && name != "default" { 27 return err 28 } 29 if _, err := dockerCli.ContextStore().GetMetadata(name); err != nil && name != "default" { 30 return err 31 } 32 configValue := name 33 if configValue == "default" { 34 configValue = "" 35 } 36 dockerConfig := dockerCli.ConfigFile() 37 dockerConfig.CurrentContext = configValue 38 if err := dockerConfig.Save(); err != nil { 39 return err 40 } 41 fmt.Fprintln(dockerCli.Out(), name) 42 fmt.Fprintf(dockerCli.Err(), "Current context is now %q\n", name) 43 if os.Getenv("DOCKER_HOST") != "" { 44 fmt.Fprintf(dockerCli.Err(), "Warning: DOCKER_HOST environment variable overrides the active context. "+ 45 "To use %q, either set the global --context flag, or unset DOCKER_HOST environment variable.\n", name) 46 } 47 return nil 48 }