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  }