The [`docker buildx bake`][1] command has reached GA; this patch adds a top-level `docker bake` command as alias for `docker buildx bake` to improve discoverability and make it more convenient to use. With this patch: docker --help Usage: docker [OPTIONS] COMMAND A self-sufficient runtime for containers Common Commands: run Create and run a new container from an image exec Execute a command in a running container ps List containers build Build an image from a Dockerfile bake Build from a file pull Download an image from a registry push Upload an image to a registry images List images ... The command is hidden if buildx is not installed; docker --help Usage: docker [OPTIONS] COMMAND A self-sufficient runtime for containers Common Commands: run Create and run a new container from an image exec Execute a command in a running container ps List containers build Build an image from a Dockerfile pull Download an image from a registry push Upload an image to a registry images List images ... We can do some tweaking after this; currently it show an error in situations where buildx is missing. We don't account for "DOCKER_BUILDKIT=0", because this is a new feature that requires buildx, and cannot be "disabled"; buildx missing; docker bake ERROR: bake requires the buildx component but it is missing or broken. Install the buildx component to use bake: https://docs.docker.com/go/buildx/ BuildKit disabled: DOCKER_BUILDKIT=0 docker bake ERROR: bake requires the buildx component but it is missing or broken. Install the buildx component to use bake: https://docs.docker.com/go/buildx/ [1]: https://www.docker.com/blog/ga-launch-docker-bake/ Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
111 lines
3.9 KiB
Go
111 lines
3.9 KiB
Go
package commands
|
|
|
|
import (
|
|
"os"
|
|
|
|
"github.com/docker/cli/cli/command"
|
|
"github.com/docker/cli/cli/command/builder"
|
|
"github.com/docker/cli/cli/command/checkpoint"
|
|
"github.com/docker/cli/cli/command/config"
|
|
"github.com/docker/cli/cli/command/container"
|
|
"github.com/docker/cli/cli/command/context"
|
|
"github.com/docker/cli/cli/command/image"
|
|
"github.com/docker/cli/cli/command/manifest"
|
|
"github.com/docker/cli/cli/command/network"
|
|
"github.com/docker/cli/cli/command/node"
|
|
"github.com/docker/cli/cli/command/plugin"
|
|
"github.com/docker/cli/cli/command/registry"
|
|
"github.com/docker/cli/cli/command/secret"
|
|
"github.com/docker/cli/cli/command/service"
|
|
"github.com/docker/cli/cli/command/stack"
|
|
"github.com/docker/cli/cli/command/swarm"
|
|
"github.com/docker/cli/cli/command/system"
|
|
"github.com/docker/cli/cli/command/trust"
|
|
"github.com/docker/cli/cli/command/volume"
|
|
"github.com/spf13/cobra"
|
|
)
|
|
|
|
// AddCommands adds all the commands from cli/command to the root command
|
|
func AddCommands(cmd *cobra.Command, dockerCli command.Cli) {
|
|
cmd.AddCommand(
|
|
// commonly used shorthands
|
|
container.NewRunCommand(dockerCli),
|
|
container.NewExecCommand(dockerCli),
|
|
container.NewPsCommand(dockerCli),
|
|
image.NewBuildCommand(dockerCli),
|
|
image.NewPullCommand(dockerCli),
|
|
image.NewPushCommand(dockerCli),
|
|
image.NewImagesCommand(dockerCli),
|
|
registry.NewLoginCommand(dockerCli),
|
|
registry.NewLogoutCommand(dockerCli),
|
|
registry.NewSearchCommand(dockerCli),
|
|
system.NewVersionCommand(dockerCli),
|
|
system.NewInfoCommand(dockerCli),
|
|
|
|
// management commands
|
|
builder.NewBakeStubCommand(dockerCli),
|
|
builder.NewBuilderCommand(dockerCli),
|
|
checkpoint.NewCheckpointCommand(dockerCli),
|
|
container.NewContainerCommand(dockerCli),
|
|
context.NewContextCommand(dockerCli),
|
|
image.NewImageCommand(dockerCli),
|
|
manifest.NewManifestCommand(dockerCli),
|
|
network.NewNetworkCommand(dockerCli),
|
|
plugin.NewPluginCommand(dockerCli),
|
|
system.NewSystemCommand(dockerCli),
|
|
trust.NewTrustCommand(dockerCli),
|
|
volume.NewVolumeCommand(dockerCli),
|
|
|
|
// orchestration (swarm) commands
|
|
config.NewConfigCommand(dockerCli),
|
|
node.NewNodeCommand(dockerCli),
|
|
secret.NewSecretCommand(dockerCli),
|
|
service.NewServiceCommand(dockerCli),
|
|
stack.NewStackCommand(dockerCli),
|
|
swarm.NewSwarmCommand(dockerCli),
|
|
|
|
// legacy commands may be hidden
|
|
hide(container.NewAttachCommand(dockerCli)),
|
|
hide(container.NewCommitCommand(dockerCli)),
|
|
hide(container.NewCopyCommand(dockerCli)),
|
|
hide(container.NewCreateCommand(dockerCli)),
|
|
hide(container.NewDiffCommand(dockerCli)),
|
|
hide(container.NewExportCommand(dockerCli)),
|
|
hide(container.NewKillCommand(dockerCli)),
|
|
hide(container.NewLogsCommand(dockerCli)),
|
|
hide(container.NewPauseCommand(dockerCli)),
|
|
hide(container.NewPortCommand(dockerCli)),
|
|
hide(container.NewRenameCommand(dockerCli)),
|
|
hide(container.NewRestartCommand(dockerCli)),
|
|
hide(container.NewRmCommand(dockerCli)),
|
|
hide(container.NewStartCommand(dockerCli)),
|
|
hide(container.NewStatsCommand(dockerCli)),
|
|
hide(container.NewStopCommand(dockerCli)),
|
|
hide(container.NewTopCommand(dockerCli)),
|
|
hide(container.NewUnpauseCommand(dockerCli)),
|
|
hide(container.NewUpdateCommand(dockerCli)),
|
|
hide(container.NewWaitCommand(dockerCli)),
|
|
hide(image.NewHistoryCommand(dockerCli)),
|
|
hide(image.NewImportCommand(dockerCli)),
|
|
hide(image.NewLoadCommand(dockerCli)),
|
|
hide(image.NewRemoveCommand(dockerCli)),
|
|
hide(image.NewSaveCommand(dockerCli)),
|
|
hide(image.NewTagCommand(dockerCli)),
|
|
hide(system.NewEventsCommand(dockerCli)),
|
|
hide(system.NewInspectCommand(dockerCli)),
|
|
)
|
|
}
|
|
|
|
func hide(cmd *cobra.Command) *cobra.Command {
|
|
// If the environment variable with name "DOCKER_HIDE_LEGACY_COMMANDS" is not empty,
|
|
// these legacy commands (such as `docker ps`, `docker exec`, etc)
|
|
// will not be shown in output console.
|
|
if os.Getenv("DOCKER_HIDE_LEGACY_COMMANDS") == "" {
|
|
return cmd
|
|
}
|
|
cmdCopy := *cmd
|
|
cmdCopy.Hidden = true
|
|
cmdCopy.Aliases = []string{}
|
|
return &cmdCopy
|
|
}
|