github.com/pdmccormick/importable-docker-buildx@v0.0.0-20240426161518-e47091289030/util/dockerutil/context.go (about)

     1  package dockerutil
     2  
     3  import (
     4  	"github.com/docker/cli/cli/command"
     5  	"github.com/docker/cli/cli/context/docker"
     6  	"github.com/pkg/errors"
     7  )
     8  
     9  // GetDockerEndpoint returns docker endpoint meta for given context
    10  func GetDockerEndpoint(dockerCli command.Cli, name string) (*docker.EndpointMeta, error) {
    11  	list, err := dockerCli.ContextStore().List()
    12  	if err != nil {
    13  		return nil, err
    14  	}
    15  	for _, l := range list {
    16  		if l.Name == name {
    17  			epm, err := docker.EndpointFromContext(l)
    18  			if err != nil {
    19  				return nil, err
    20  			}
    21  			return &epm, nil
    22  		}
    23  	}
    24  	return nil, nil
    25  }
    26  
    27  // GetCurrentEndpoint returns the current default endpoint value
    28  func GetCurrentEndpoint(dockerCli command.Cli) (string, error) {
    29  	name := dockerCli.CurrentContext()
    30  	if name != "default" {
    31  		return name, nil
    32  	}
    33  	dem, err := GetDockerEndpoint(dockerCli, name)
    34  	if err != nil {
    35  		return "", errors.Errorf("docker endpoint for %q not found", name)
    36  	} else if dem != nil {
    37  		return dem.Host, nil
    38  	}
    39  	return "", nil
    40  }