github.com/pdmccormick/importable-docker-buildx@v0.0.0-20240426161518-e47091289030/commands/install.go (about)

     1  package commands
     2  
     3  import (
     4  	"os"
     5  
     6  	"github.com/docker/buildx/util/cobrautil"
     7  	"github.com/docker/buildx/util/cobrautil/completion"
     8  	"github.com/docker/cli/cli"
     9  	"github.com/docker/cli/cli/command"
    10  	"github.com/docker/cli/cli/config"
    11  	"github.com/pkg/errors"
    12  	"github.com/spf13/cobra"
    13  )
    14  
    15  type installOptions struct {
    16  }
    17  
    18  func runInstall(_ command.Cli, _ installOptions) error {
    19  	dir := config.Dir()
    20  	if err := os.MkdirAll(dir, 0755); err != nil {
    21  		return errors.Wrap(err, "could not create docker config")
    22  	}
    23  
    24  	cfg, err := config.Load(dir)
    25  	if err != nil {
    26  		return err
    27  	}
    28  
    29  	if cfg.Aliases == nil {
    30  		cfg.Aliases = map[string]string{}
    31  	}
    32  	cfg.Aliases["builder"] = "buildx"
    33  
    34  	if err := cfg.Save(); err != nil {
    35  		return errors.Wrap(err, "could not write docker config")
    36  	}
    37  	return nil
    38  }
    39  
    40  func installCmd(dockerCli command.Cli) *cobra.Command {
    41  	var options installOptions
    42  
    43  	cmd := &cobra.Command{
    44  		Use:   "install",
    45  		Short: "Install buildx as a 'docker builder' alias",
    46  		Args:  cli.ExactArgs(0),
    47  		RunE: func(cmd *cobra.Command, args []string) error {
    48  			return runInstall(dockerCli, options)
    49  		},
    50  		Hidden:            true,
    51  		ValidArgsFunction: completion.Disable,
    52  	}
    53  
    54  	// hide builder persistent flag for this command
    55  	cobrautil.HideInheritedFlags(cmd, "builder")
    56  
    57  	return cmd
    58  }