github.com/docker/app@v0.9.1-beta3.0.20210611140623-a48f773ab002/cmd/cnab-run/env.go (about) 1 package main 2 3 import ( 4 "encoding/json" 5 "io/ioutil" 6 "os" 7 8 "github.com/docker/app/internal" 9 "github.com/docker/cli/cli/command" 10 cliconfig "github.com/docker/cli/cli/config" 11 "github.com/docker/cli/cli/context/docker" 12 kubcontext "github.com/docker/cli/cli/context/kubernetes" 13 contextstore "github.com/docker/cli/cli/context/store" 14 cliflags "github.com/docker/cli/cli/flags" 15 ) 16 17 var storeConfig = contextstore.NewConfig( 18 func() interface{} { return &command.DockerContext{} }, 19 contextstore.EndpointTypeGetter(docker.DockerEndpoint, func() interface{} { return &docker.EndpointMeta{} }), 20 contextstore.EndpointTypeGetter(kubcontext.KubernetesEndpoint, func() interface{} { return &kubcontext.EndpointMeta{} }), 21 ) 22 23 func setupDockerContext() (command.Cli, error) { 24 s := contextstore.New(cliconfig.ContextStoreDir(), storeConfig) 25 f, err := os.Open(internal.CredentialDockerContextPath) 26 if err != nil { 27 return nil, err 28 } 29 defer f.Close() 30 if err := contextstore.Import("cnab", s, f); err != nil { 31 return nil, err 32 } 33 cli, err := command.NewDockerCli() 34 if err != nil { 35 return nil, err 36 } 37 if err := cli.Initialize(&cliflags.ClientOptions{ 38 Common: &cliflags.CommonOptions{ 39 Context: "cnab", 40 }, 41 }); err != nil { 42 return nil, err 43 } 44 authConfigsJSON, err := ioutil.ReadFile(internal.CredentialRegistryPath) 45 if err != nil { 46 return nil, err 47 } 48 49 configFile := cli.ConfigFile() 50 51 if err := json.Unmarshal(authConfigsJSON, &configFile.AuthConfigs); err != nil { 52 return nil, err 53 } 54 55 return cli, nil 56 }