From 38595fecb6cd1cedecd1201d8a86b4443c467136 Mon Sep 17 00:00:00 2001 From: Alano Terblanche <18033717+Benehiko@users.noreply.github.com> Date: Tue, 19 Aug 2025 11:12:19 +0200 Subject: [PATCH] Unexport container commands This patch deprecates exported container commands and moves the implementation details to an unexported function. Commands that are affected include: - container.NewRunCommand - container.NewExecCommand - container.NewPsCommand - container.NewContainerCommand - container.NewAttachCommand - container.NewCommitCommand - container.NewCopyCommand - container.NewCreateCommand - container.NewDiffCommand - container.NewExportCommand - container.NewKillCommand - container.NewLogsCommand - container.NewPauseCommand - container.NewPortCommand - container.NewRenameCommand - container.NewRestartCommand - container.NewRmCommand - container.NewStartCommand - container.NewStatsCommand - container.NewStopCommand - container.NewTopCommand - container.NewUnpauseCommand - container.NewUpdateCommand - container.NewWaitCommand - container.NewPruneCommand Signed-off-by: Alano Terblanche <18033717+Benehiko@users.noreply.github.com> --- cli/command/commands/commands.go | 24 ++++++++++ cli/command/container/attach.go | 6 +++ cli/command/container/attach_test.go | 2 +- cli/command/container/cmd.go | 60 +++++++++++++----------- cli/command/container/commit.go | 12 +++-- cli/command/container/commit_test.go | 4 +- cli/command/container/completion_test.go | 2 +- cli/command/container/cp.go | 12 +++-- cli/command/container/create.go | 16 +++++-- cli/command/container/create_test.go | 8 ++-- cli/command/container/diff.go | 12 +++-- cli/command/container/diff_test.go | 4 +- cli/command/container/exec.go | 12 +++-- cli/command/container/exec_test.go | 2 +- cli/command/container/export.go | 12 +++-- cli/command/container/export_test.go | 4 +- cli/command/container/kill.go | 12 +++-- cli/command/container/kill_test.go | 4 +- cli/command/container/list.go | 8 +++- cli/command/container/logs.go | 12 +++-- cli/command/container/pause.go | 12 +++-- cli/command/container/pause_test.go | 4 +- cli/command/container/port.go | 6 +++ cli/command/container/port_test.go | 2 +- cli/command/container/prune.go | 14 ++++-- cli/command/container/prune_test.go | 2 +- cli/command/container/rename.go | 12 +++-- cli/command/container/rename_test.go | 4 +- cli/command/container/restart.go | 12 +++-- cli/command/container/restart_test.go | 2 +- cli/command/container/rm.go | 14 ++++-- cli/command/container/rm_test.go | 2 +- cli/command/container/run.go | 16 +++++-- cli/command/container/run_test.go | 12 ++--- cli/command/container/start.go | 6 +++ cli/command/container/stats.go | 6 +++ cli/command/container/stop.go | 12 +++-- cli/command/container/stop_test.go | 2 +- cli/command/container/top.go | 12 +++-- cli/command/container/unpause.go | 6 +++ cli/command/container/update.go | 12 +++-- cli/command/container/wait.go | 12 +++-- 42 files changed, 292 insertions(+), 118 deletions(-) diff --git a/cli/command/commands/commands.go b/cli/command/commands/commands.go index 8c6e93625..c7518c073 100644 --- a/cli/command/commands/commands.go +++ b/cli/command/commands/commands.go @@ -29,8 +29,11 @@ import ( func AddCommands(cmd *cobra.Command, dockerCli command.Cli) { cmd.AddCommand( // commonly used shorthands + //nolint:staticcheck // TODO: Remove when migration to cli/internal/commands.Register is complete. (see #6283) container.NewRunCommand(dockerCli), + //nolint:staticcheck // TODO: Remove when migration to cli/internal/commands.Register is complete. (see #6283) container.NewExecCommand(dockerCli), + //nolint:staticcheck // TODO: Remove when migration to cli/internal/commands.Register is complete. (see #6283) container.NewPsCommand(dockerCli), image.NewBuildCommand(dockerCli), image.NewPullCommand(dockerCli), @@ -49,6 +52,7 @@ func AddCommands(cmd *cobra.Command, dockerCli command.Cli) { builder.NewBuilderCommand(dockerCli), //nolint:staticcheck // TODO: Remove when migration to cli/internal/commands.Register is complete. (see #6283) checkpoint.NewCheckpointCommand(dockerCli), + //nolint:staticcheck // TODO: Remove when migration to cli/internal/commands.Register is complete. (see #6283) container.NewContainerCommand(dockerCli), context.NewContextCommand(dockerCli), image.NewImageCommand(dockerCli), @@ -69,25 +73,45 @@ func AddCommands(cmd *cobra.Command, dockerCli command.Cli) { swarm.NewSwarmCommand(dockerCli), // legacy commands may be hidden + //nolint:staticcheck // TODO: Remove when migration to cli/internal/commands.Register is complete. (see #6283) hide(container.NewAttachCommand(dockerCli)), + //nolint:staticcheck // TODO: Remove when migration to cli/internal/commands.Register is complete. (see #6283) hide(container.NewCommitCommand(dockerCli)), + //nolint:staticcheck // TODO: Remove when migration to cli/internal/commands.Register is complete. (see #6283) hide(container.NewCopyCommand(dockerCli)), + //nolint:staticcheck // TODO: Remove when migration to cli/internal/commands.Register is complete. (see #6283) hide(container.NewCreateCommand(dockerCli)), + //nolint:staticcheck // TODO: Remove when migration to cli/internal/commands.Register is complete. (see #6283) hide(container.NewDiffCommand(dockerCli)), + //nolint:staticcheck // TODO: Remove when migration to cli/internal/commands.Register is complete. (see #6283) hide(container.NewExportCommand(dockerCli)), + //nolint:staticcheck // TODO: Remove when migration to cli/internal/commands.Register is complete. (see #6283) hide(container.NewKillCommand(dockerCli)), + //nolint:staticcheck // TODO: Remove when migration to cli/internal/commands.Register is complete. (see #6283) hide(container.NewLogsCommand(dockerCli)), + //nolint:staticcheck // TODO: Remove when migration to cli/internal/commands.Register is complete. (see #6283) hide(container.NewPauseCommand(dockerCli)), + //nolint:staticcheck // TODO: Remove when migration to cli/internal/commands.Register is complete. (see #6283) hide(container.NewPortCommand(dockerCli)), + //nolint:staticcheck // TODO: Remove when migration to cli/internal/commands.Register is complete. (see #6283) hide(container.NewRenameCommand(dockerCli)), + //nolint:staticcheck // TODO: Remove when migration to cli/internal/commands.Register is complete. (see #6283) hide(container.NewRestartCommand(dockerCli)), + //nolint:staticcheck // TODO: Remove when migration to cli/internal/commands.Register is complete. (see #6283) hide(container.NewRmCommand(dockerCli)), + //nolint:staticcheck // TODO: Remove when migration to cli/internal/commands.Register is complete. (see #6283) hide(container.NewStartCommand(dockerCli)), + //nolint:staticcheck // TODO: Remove when migration to cli/internal/commands.Register is complete. (see #6283) hide(container.NewStatsCommand(dockerCli)), + //nolint:staticcheck // TODO: Remove when migration to cli/internal/commands.Register is complete. (see #6283) hide(container.NewStopCommand(dockerCli)), + //nolint:staticcheck // TODO: Remove when migration to cli/internal/commands.Register is complete. (see #6283) hide(container.NewTopCommand(dockerCli)), + //nolint:staticcheck // TODO: Remove when migration to cli/internal/commands.Register is complete. (see #6283) hide(container.NewUnpauseCommand(dockerCli)), + //nolint:staticcheck // TODO: Remove when migration to cli/internal/commands.Register is complete. (see #6283) hide(container.NewUpdateCommand(dockerCli)), + //nolint:staticcheck // TODO: Remove when migration to cli/internal/commands.Register is complete. (see #6283) hide(container.NewWaitCommand(dockerCli)), hide(image.NewHistoryCommand(dockerCli)), hide(image.NewImportCommand(dockerCli)), diff --git a/cli/command/container/attach.go b/cli/command/container/attach.go index f3dc252e2..f52475fda 100644 --- a/cli/command/container/attach.go +++ b/cli/command/container/attach.go @@ -41,7 +41,13 @@ func inspectContainerAndCheckState(ctx context.Context, apiClient client.APIClie } // NewAttachCommand creates a new cobra.Command for `docker attach` +// +// Deprecated: Do not import commands directly. They will be removed in a future release. func NewAttachCommand(dockerCLI command.Cli) *cobra.Command { + return newAttachCommand(dockerCLI) +} + +func newAttachCommand(dockerCLI command.Cli) *cobra.Command { var opts AttachOptions cmd := &cobra.Command{ diff --git a/cli/command/container/attach_test.go b/cli/command/container/attach_test.go index dcdfcdd1e..afe3a8771 100644 --- a/cli/command/container/attach_test.go +++ b/cli/command/container/attach_test.go @@ -74,7 +74,7 @@ func TestNewAttachCommandErrors(t *testing.T) { } for _, tc := range testCases { t.Run(tc.name, func(t *testing.T) { - cmd := NewAttachCommand(test.NewFakeCli(&fakeClient{inspectFunc: tc.containerInspectFunc})) + cmd := newAttachCommand(test.NewFakeCli(&fakeClient{inspectFunc: tc.containerInspectFunc})) cmd.SetOut(io.Discard) cmd.SetErr(io.Discard) cmd.SetArgs(tc.args) diff --git a/cli/command/container/cmd.go b/cli/command/container/cmd.go index 4ff00e74b..7d0105373 100644 --- a/cli/command/container/cmd.go +++ b/cli/command/container/cmd.go @@ -7,39 +7,45 @@ import ( ) // NewContainerCommand returns a cobra command for `container` subcommands -func NewContainerCommand(dockerCli command.Cli) *cobra.Command { +// +// Deprecated: Do not import commands directly. They will be removed in a future release. +func NewContainerCommand(dockerCLI command.Cli) *cobra.Command { + return newContainerCommand(dockerCLI) +} + +func newContainerCommand(dockerCLI command.Cli) *cobra.Command { cmd := &cobra.Command{ Use: "container", Short: "Manage containers", Args: cli.NoArgs, - RunE: command.ShowHelp(dockerCli.Err()), + RunE: command.ShowHelp(dockerCLI.Err()), } cmd.AddCommand( - NewAttachCommand(dockerCli), - NewCommitCommand(dockerCli), - NewCopyCommand(dockerCli), - NewCreateCommand(dockerCli), - NewDiffCommand(dockerCli), - NewExecCommand(dockerCli), - NewExportCommand(dockerCli), - NewKillCommand(dockerCli), - NewLogsCommand(dockerCli), - NewPauseCommand(dockerCli), - NewPortCommand(dockerCli), - NewRenameCommand(dockerCli), - NewRestartCommand(dockerCli), - newRemoveCommand(dockerCli), - NewRunCommand(dockerCli), - NewStartCommand(dockerCli), - NewStatsCommand(dockerCli), - NewStopCommand(dockerCli), - NewTopCommand(dockerCli), - NewUnpauseCommand(dockerCli), - NewUpdateCommand(dockerCli), - NewWaitCommand(dockerCli), - newListCommand(dockerCli), - newInspectCommand(dockerCli), - NewPruneCommand(dockerCli), + newAttachCommand(dockerCLI), + newCommitCommand(dockerCLI), + newCopyCommand(dockerCLI), + newCreateCommand(dockerCLI), + newDiffCommand(dockerCLI), + newExecCommand(dockerCLI), + newExportCommand(dockerCLI), + newKillCommand(dockerCLI), + newLogsCommand(dockerCLI), + newPauseCommand(dockerCLI), + newPortCommand(dockerCLI), + newRenameCommand(dockerCLI), + newRestartCommand(dockerCLI), + newRemoveCommand(dockerCLI), + newRunCommand(dockerCLI), + newStartCommand(dockerCLI), + newStatsCommand(dockerCLI), + newStopCommand(dockerCLI), + newTopCommand(dockerCLI), + newUnpauseCommand(dockerCLI), + newUpdateCommand(dockerCLI), + newWaitCommand(dockerCLI), + newListCommand(dockerCLI), + newInspectCommand(dockerCLI), + newPruneCommand(dockerCLI), ) return cmd } diff --git a/cli/command/container/commit.go b/cli/command/container/commit.go index 15160b914..c18225dd7 100644 --- a/cli/command/container/commit.go +++ b/cli/command/container/commit.go @@ -23,7 +23,13 @@ type commitOptions struct { } // NewCommitCommand creates a new cobra.Command for `docker commit` -func NewCommitCommand(dockerCli command.Cli) *cobra.Command { +// +// Deprecated: Do not import commands directly. They will be removed in a future release. +func NewCommitCommand(dockerCLI command.Cli) *cobra.Command { + return newCommitCommand(dockerCLI) +} + +func newCommitCommand(dockerCLI command.Cli) *cobra.Command { var options commitOptions cmd := &cobra.Command{ @@ -35,12 +41,12 @@ func NewCommitCommand(dockerCli command.Cli) *cobra.Command { if len(args) > 1 { options.reference = args[1] } - return runCommit(cmd.Context(), dockerCli, &options) + return runCommit(cmd.Context(), dockerCLI, &options) }, Annotations: map[string]string{ "aliases": "docker container commit, docker commit", }, - ValidArgsFunction: completion.ContainerNames(dockerCli, false), + ValidArgsFunction: completion.ContainerNames(dockerCLI, false), } flags := cmd.Flags() diff --git a/cli/command/container/commit_test.go b/cli/command/container/commit_test.go index 04f5fb5c2..aab7650b0 100644 --- a/cli/command/container/commit_test.go +++ b/cli/command/container/commit_test.go @@ -29,7 +29,7 @@ func TestRunCommit(t *testing.T) { }, }) - cmd := NewCommitCommand(cli) + cmd := newCommitCommand(cli) cmd.SetOut(io.Discard) cmd.SetArgs( []string{ @@ -60,7 +60,7 @@ func TestRunCommitClientError(t *testing.T) { }, }) - cmd := NewCommitCommand(cli) + cmd := newCommitCommand(cli) cmd.SetOut(io.Discard) cmd.SetErr(io.Discard) cmd.SetArgs([]string{"container-id"}) diff --git a/cli/command/container/completion_test.go b/cli/command/container/completion_test.go index d6879737c..b1b14f693 100644 --- a/cli/command/container/completion_test.go +++ b/cli/command/container/completion_test.go @@ -59,7 +59,7 @@ func TestCompletePid(t *testing.T) { cli := test.NewFakeCli(&fakeClient{ containerListFunc: tc.containerListFunc, }) - completions, directive := completePid(cli)(NewRunCommand(cli), nil, tc.toComplete) + completions, directive := completePid(cli)(newRunCommand(cli), nil, tc.toComplete) assert.Check(t, is.DeepEqual(completions, tc.expectedCompletions)) assert.Check(t, is.Equal(directive, tc.expectedDirective)) }) diff --git a/cli/command/container/cp.go b/cli/command/container/cp.go index 3d96ee349..cd92869ee 100644 --- a/cli/command/container/cp.go +++ b/cli/command/container/cp.go @@ -122,7 +122,13 @@ func copyProgress(ctx context.Context, dst io.Writer, header string, total *int6 } // NewCopyCommand creates a new `docker cp` command -func NewCopyCommand(dockerCli command.Cli) *cobra.Command { +// +// Deprecated: Do not import commands directly. They will be removed in a future release. +func NewCopyCommand(dockerCLI command.Cli) *cobra.Command { + return newCopyCommand(dockerCLI) +} + +func newCopyCommand(dockerCLI command.Cli) *cobra.Command { var opts copyOptions cmd := &cobra.Command{ @@ -147,9 +153,9 @@ container source to stdout.`, opts.destination = args[1] if !cmd.Flag("quiet").Changed { // User did not specify "quiet" flag; suppress output if no terminal is attached - opts.quiet = !dockerCli.Out().IsTerminal() + opts.quiet = !dockerCLI.Out().IsTerminal() } - return runCopy(cmd.Context(), dockerCli, opts) + return runCopy(cmd.Context(), dockerCLI, opts) }, Annotations: map[string]string{ "aliases": "docker container cp, docker cp", diff --git a/cli/command/container/create.go b/cli/command/container/create.go index a78789901..a05f52b8b 100644 --- a/cli/command/container/create.go +++ b/cli/command/container/create.go @@ -52,7 +52,13 @@ type createOptions struct { } // NewCreateCommand creates a new cobra.Command for `docker create` -func NewCreateCommand(dockerCli command.Cli) *cobra.Command { +// +// Deprecated: Do not import commands directly. They will be removed in a future release. +func NewCreateCommand(dockerCLI command.Cli) *cobra.Command { + return newCreateCommand(dockerCLI) +} + +func newCreateCommand(dockerCLI command.Cli) *cobra.Command { var options createOptions var copts *containerOptions @@ -65,12 +71,12 @@ func NewCreateCommand(dockerCli command.Cli) *cobra.Command { if len(args) > 1 { copts.Args = args[1:] } - return runCreate(cmd.Context(), dockerCli, cmd.Flags(), &options, copts) + return runCreate(cmd.Context(), dockerCLI, cmd.Flags(), &options, copts) }, Annotations: map[string]string{ "aliases": "docker container create, docker create", }, - ValidArgsFunction: completion.ImageNames(dockerCli, -1), + ValidArgsFunction: completion.ImageNames(dockerCLI, -1), } flags := cmd.Flags() @@ -90,10 +96,10 @@ func NewCreateCommand(dockerCli command.Cli) *cobra.Command { addPlatformFlag(flags, &options.platform) _ = cmd.RegisterFlagCompletionFunc("platform", completion.Platforms) - flags.BoolVar(&options.untrusted, "disable-content-trust", !dockerCli.ContentTrustEnabled(), "Skip image verification") + flags.BoolVar(&options.untrusted, "disable-content-trust", !dockerCLI.ContentTrustEnabled(), "Skip image verification") copts = addFlags(flags) - addCompletions(cmd, dockerCli) + addCompletions(cmd, dockerCLI) flags.VisitAll(func(flag *pflag.Flag) { // Set a default completion function if none was set. We don't look diff --git a/cli/command/container/create_test.go b/cli/command/container/create_test.go index 5065f3678..1071c47b3 100644 --- a/cli/command/container/create_test.go +++ b/cli/command/container/create_test.go @@ -206,7 +206,7 @@ func TestCreateContainerValidateFlags(t *testing.T) { }, } { t.Run(tc.name, func(t *testing.T) { - cmd := NewCreateCommand(test.NewFakeCli(&fakeClient{})) + cmd := newCreateCommand(test.NewFakeCli(&fakeClient{})) cmd.SetOut(io.Discard) cmd.SetErr(io.Discard) cmd.SetArgs(tc.args) @@ -260,7 +260,7 @@ func TestNewCreateCommandWithContentTrustErrors(t *testing.T) { }, }, test.EnableContentTrust) fakeCLI.SetNotaryClient(tc.notaryFunc) - cmd := NewCreateCommand(fakeCLI) + cmd := newCreateCommand(fakeCLI) cmd.SetOut(io.Discard) cmd.SetErr(io.Discard) cmd.SetArgs(tc.args) @@ -314,7 +314,7 @@ func TestNewCreateCommandWithWarnings(t *testing.T) { return container.CreateResponse{Warnings: tc.warnings}, nil }, }) - cmd := NewCreateCommand(fakeCLI) + cmd := newCreateCommand(fakeCLI) cmd.SetOut(io.Discard) cmd.SetArgs(tc.args) err := cmd.Execute() @@ -366,7 +366,7 @@ func TestCreateContainerWithProxyConfig(t *testing.T) { }, }, }) - cmd := NewCreateCommand(fakeCLI) + cmd := newCreateCommand(fakeCLI) cmd.SetOut(io.Discard) cmd.SetArgs([]string{"image:tag"}) err := cmd.Execute() diff --git a/cli/command/container/diff.go b/cli/command/container/diff.go index 2b90e08e0..74293639a 100644 --- a/cli/command/container/diff.go +++ b/cli/command/container/diff.go @@ -11,18 +11,24 @@ import ( ) // NewDiffCommand creates a new cobra.Command for `docker diff` -func NewDiffCommand(dockerCli command.Cli) *cobra.Command { +// +// Deprecated: Do not import commands directly. They will be removed in a future release. +func NewDiffCommand(dockerCLI command.Cli) *cobra.Command { + return newDiffCommand(dockerCLI) +} + +func newDiffCommand(dockerCLI command.Cli) *cobra.Command { return &cobra.Command{ Use: "diff CONTAINER", Short: "Inspect changes to files or directories on a container's filesystem", Args: cli.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { - return runDiff(cmd.Context(), dockerCli, args[0]) + return runDiff(cmd.Context(), dockerCLI, args[0]) }, Annotations: map[string]string{ "aliases": "docker container diff, docker diff", }, - ValidArgsFunction: completion.ContainerNames(dockerCli, false), + ValidArgsFunction: completion.ContainerNames(dockerCLI, false), } } diff --git a/cli/command/container/diff_test.go b/cli/command/container/diff_test.go index d82889b0b..d2504858b 100644 --- a/cli/command/container/diff_test.go +++ b/cli/command/container/diff_test.go @@ -36,7 +36,7 @@ func TestRunDiff(t *testing.T) { }, }) - cmd := NewDiffCommand(cli) + cmd := newDiffCommand(cli) cmd.SetOut(io.Discard) cmd.SetArgs([]string{"container-id"}) @@ -68,7 +68,7 @@ func TestRunDiffClientError(t *testing.T) { }, }) - cmd := NewDiffCommand(cli) + cmd := newDiffCommand(cli) cmd.SetOut(io.Discard) cmd.SetErr(io.Discard) diff --git a/cli/command/container/exec.go b/cli/command/container/exec.go index 678fd0b34..fa743a226 100644 --- a/cli/command/container/exec.go +++ b/cli/command/container/exec.go @@ -40,7 +40,13 @@ func NewExecOptions() ExecOptions { } // NewExecCommand creates a new cobra.Command for `docker exec` -func NewExecCommand(dockerCli command.Cli) *cobra.Command { +// +// Deprecated: Do not import commands directly. They will be removed in a future release. +func NewExecCommand(dockerCLI command.Cli) *cobra.Command { + return newExecCommand(dockerCLI) +} + +func newExecCommand(dockerCLI command.Cli) *cobra.Command { options := NewExecOptions() cmd := &cobra.Command{ @@ -50,9 +56,9 @@ func NewExecCommand(dockerCli command.Cli) *cobra.Command { RunE: func(cmd *cobra.Command, args []string) error { containerIDorName := args[0] options.Command = args[1:] - return RunExec(cmd.Context(), dockerCli, containerIDorName, options) + return RunExec(cmd.Context(), dockerCLI, containerIDorName, options) }, - ValidArgsFunction: completion.ContainerNames(dockerCli, false, func(ctr container.Summary) bool { + ValidArgsFunction: completion.ContainerNames(dockerCLI, false, func(ctr container.Summary) bool { return ctr.State != container.StatePaused }), Annotations: map[string]string{ diff --git a/cli/command/container/exec_test.go b/cli/command/container/exec_test.go index 0356c1ef9..ef1ed5ef4 100644 --- a/cli/command/container/exec_test.go +++ b/cli/command/container/exec_test.go @@ -263,7 +263,7 @@ func TestNewExecCommandErrors(t *testing.T) { } for _, tc := range testCases { fakeCLI := test.NewFakeCli(&fakeClient{inspectFunc: tc.containerInspectFunc}) - cmd := NewExecCommand(fakeCLI) + cmd := newExecCommand(fakeCLI) cmd.SetOut(io.Discard) cmd.SetArgs(tc.args) assert.ErrorContains(t, cmd.Execute(), tc.expectedError) diff --git a/cli/command/container/export.go b/cli/command/container/export.go index 990c2e66f..ccb0ca29b 100644 --- a/cli/command/container/export.go +++ b/cli/command/container/export.go @@ -18,7 +18,13 @@ type exportOptions struct { } // NewExportCommand creates a new `docker export` command -func NewExportCommand(dockerCli command.Cli) *cobra.Command { +// +// Deprecated: Do not import commands directly. They will be removed in a future release. +func NewExportCommand(dockerCLI command.Cli) *cobra.Command { + return newExportCommand(dockerCLI) +} + +func newExportCommand(dockerCLI command.Cli) *cobra.Command { var opts exportOptions cmd := &cobra.Command{ @@ -27,12 +33,12 @@ func NewExportCommand(dockerCli command.Cli) *cobra.Command { Args: cli.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { opts.container = args[0] - return runExport(cmd.Context(), dockerCli, opts) + return runExport(cmd.Context(), dockerCLI, opts) }, Annotations: map[string]string{ "aliases": "docker container export, docker export", }, - ValidArgsFunction: completion.ContainerNames(dockerCli, true), + ValidArgsFunction: completion.ContainerNames(dockerCLI, true), } flags := cmd.Flags() diff --git a/cli/command/container/export_test.go b/cli/command/container/export_test.go index 182713ab9..9451eefcb 100644 --- a/cli/command/container/export_test.go +++ b/cli/command/container/export_test.go @@ -19,7 +19,7 @@ func TestContainerExportOutputToFile(t *testing.T) { return io.NopCloser(strings.NewReader("bar")), nil }, }) - cmd := NewExportCommand(cli) + cmd := newExportCommand(cli) cmd.SetOut(io.Discard) cmd.SetArgs([]string{"-o", dir.Join("foo"), "container"}) assert.NilError(t, cmd.Execute()) @@ -37,7 +37,7 @@ func TestContainerExportOutputToIrregularFile(t *testing.T) { return io.NopCloser(strings.NewReader("foo")), nil }, }) - cmd := NewExportCommand(cli) + cmd := newExportCommand(cli) cmd.SetOut(io.Discard) cmd.SetErr(io.Discard) cmd.SetArgs([]string{"-o", "/dev/random", "container"}) diff --git a/cli/command/container/kill.go b/cli/command/container/kill.go index 3d5c59941..1d8521563 100644 --- a/cli/command/container/kill.go +++ b/cli/command/container/kill.go @@ -18,7 +18,13 @@ type killOptions struct { } // NewKillCommand creates a new cobra.Command for `docker kill` -func NewKillCommand(dockerCli command.Cli) *cobra.Command { +// +// Deprecated: Do not import commands directly. They will be removed in a future release. +func NewKillCommand(dockerCLI command.Cli) *cobra.Command { + return newKillCommand(dockerCLI) +} + +func newKillCommand(dockerCLI command.Cli) *cobra.Command { var opts killOptions cmd := &cobra.Command{ @@ -27,12 +33,12 @@ func NewKillCommand(dockerCli command.Cli) *cobra.Command { Args: cli.RequiresMinArgs(1), RunE: func(cmd *cobra.Command, args []string) error { opts.containers = args - return runKill(cmd.Context(), dockerCli, &opts) + return runKill(cmd.Context(), dockerCLI, &opts) }, Annotations: map[string]string{ "aliases": "docker container kill, docker kill", }, - ValidArgsFunction: completion.ContainerNames(dockerCli, false), + ValidArgsFunction: completion.ContainerNames(dockerCLI, false), } flags := cmd.Flags() diff --git a/cli/command/container/kill_test.go b/cli/command/container/kill_test.go index 7bd1f10b9..c5268dd4b 100644 --- a/cli/command/container/kill_test.go +++ b/cli/command/container/kill_test.go @@ -24,7 +24,7 @@ func TestRunKill(t *testing.T) { }, }) - cmd := NewKillCommand(cli) + cmd := newKillCommand(cli) cmd.SetOut(io.Discard) cmd.SetArgs([]string{ @@ -56,7 +56,7 @@ func TestRunKillClientError(t *testing.T) { }, }) - cmd := NewKillCommand(cli) + cmd := newKillCommand(cli) cmd.SetOut(io.Discard) cmd.SetErr(io.Discard) diff --git a/cli/command/container/list.go b/cli/command/container/list.go index 1330c7d55..43885f0bf 100644 --- a/cli/command/container/list.go +++ b/cli/command/container/list.go @@ -29,7 +29,13 @@ type psOptions struct { } // NewPsCommand creates a new cobra.Command for `docker ps` +// +// Deprecated: Do not import commands directly. They will be removed in a future release. func NewPsCommand(dockerCLI command.Cli) *cobra.Command { + return newPsCommand(dockerCLI) +} + +func newPsCommand(dockerCLI command.Cli) *cobra.Command { options := psOptions{filter: opts.NewFilterOpt()} cmd := &cobra.Command{ @@ -62,7 +68,7 @@ func NewPsCommand(dockerCLI command.Cli) *cobra.Command { } func newListCommand(dockerCLI command.Cli) *cobra.Command { - cmd := *NewPsCommand(dockerCLI) + cmd := *newPsCommand(dockerCLI) cmd.Aliases = []string{"ps", "list"} cmd.Use = "ls [OPTIONS]" return &cmd diff --git a/cli/command/container/logs.go b/cli/command/container/logs.go index 63e6898cc..57fb8dfea 100644 --- a/cli/command/container/logs.go +++ b/cli/command/container/logs.go @@ -24,7 +24,13 @@ type logsOptions struct { } // NewLogsCommand creates a new cobra.Command for `docker logs` -func NewLogsCommand(dockerCli command.Cli) *cobra.Command { +// +// Deprecated: Do not import commands directly. They will be removed in a future release. +func NewLogsCommand(dockerCLI command.Cli) *cobra.Command { + return newLogsCommand(dockerCLI) +} + +func newLogsCommand(dockerCLI command.Cli) *cobra.Command { var opts logsOptions cmd := &cobra.Command{ @@ -33,12 +39,12 @@ func NewLogsCommand(dockerCli command.Cli) *cobra.Command { Args: cli.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { opts.container = args[0] - return runLogs(cmd.Context(), dockerCli, &opts) + return runLogs(cmd.Context(), dockerCLI, &opts) }, Annotations: map[string]string{ "aliases": "docker container logs, docker logs", }, - ValidArgsFunction: completion.ContainerNames(dockerCli, true), + ValidArgsFunction: completion.ContainerNames(dockerCLI, true), } flags := cmd.Flags() diff --git a/cli/command/container/pause.go b/cli/command/container/pause.go index 8b8f68413..1769920e6 100644 --- a/cli/command/container/pause.go +++ b/cli/command/container/pause.go @@ -17,7 +17,13 @@ type pauseOptions struct { } // NewPauseCommand creates a new cobra.Command for `docker pause` -func NewPauseCommand(dockerCli command.Cli) *cobra.Command { +// +// Deprecated: Do not import commands directly. They will be removed in a future release. +func NewPauseCommand(dockerCLI command.Cli) *cobra.Command { + return newPauseCommand(dockerCLI) +} + +func newPauseCommand(dockerCLI command.Cli) *cobra.Command { var opts pauseOptions return &cobra.Command{ @@ -26,12 +32,12 @@ func NewPauseCommand(dockerCli command.Cli) *cobra.Command { Args: cli.RequiresMinArgs(1), RunE: func(cmd *cobra.Command, args []string) error { opts.containers = args - return runPause(cmd.Context(), dockerCli, &opts) + return runPause(cmd.Context(), dockerCLI, &opts) }, Annotations: map[string]string{ "aliases": "docker container pause, docker pause", }, - ValidArgsFunction: completion.ContainerNames(dockerCli, false, func(ctr container.Summary) bool { + ValidArgsFunction: completion.ContainerNames(dockerCLI, false, func(ctr container.Summary) bool { return ctr.State != container.StatePaused }), } diff --git a/cli/command/container/pause_test.go b/cli/command/container/pause_test.go index a359797a9..04e4f4067 100644 --- a/cli/command/container/pause_test.go +++ b/cli/command/container/pause_test.go @@ -21,7 +21,7 @@ func TestRunPause(t *testing.T) { }, ) - cmd := NewPauseCommand(cli) + cmd := newPauseCommand(cli) cmd.SetOut(io.Discard) cmd.SetArgs([]string{"container-id-1", "container-id-2"}) @@ -47,7 +47,7 @@ func TestRunPauseClientError(t *testing.T) { }, ) - cmd := NewPauseCommand(cli) + cmd := newPauseCommand(cli) cmd.SetOut(io.Discard) cmd.SetErr(io.Discard) cmd.SetArgs([]string{"container-id-1", "container-id-2"}) diff --git a/cli/command/container/port.go b/cli/command/container/port.go index 1e93b7442..3cf822c61 100644 --- a/cli/command/container/port.go +++ b/cli/command/container/port.go @@ -24,7 +24,13 @@ type portOptions struct { } // NewPortCommand creates a new cobra.Command for `docker port` +// +// Deprecated: Do not import commands directly. They will be removed in a future release. func NewPortCommand(dockerCli command.Cli) *cobra.Command { + return newPortCommand(dockerCli) +} + +func newPortCommand(dockerCli command.Cli) *cobra.Command { var opts portOptions cmd := &cobra.Command{ diff --git a/cli/command/container/port_test.go b/cli/command/container/port_test.go index 009c78385..e1a7e317c 100644 --- a/cli/command/container/port_test.go +++ b/cli/command/container/port_test.go @@ -65,7 +65,7 @@ func TestNewPortCommandOutput(t *testing.T) { return ci, nil }, }) - cmd := NewPortCommand(cli) + cmd := newPortCommand(cli) cmd.SetErr(io.Discard) cmd.SetArgs([]string{"some_container", tc.port}) err := cmd.Execute() diff --git a/cli/command/container/prune.go b/cli/command/container/prune.go index 82c319ccd..44a348cef 100644 --- a/cli/command/container/prune.go +++ b/cli/command/container/prune.go @@ -28,7 +28,13 @@ type pruneOptions struct { } // NewPruneCommand returns a new cobra prune command for containers -func NewPruneCommand(dockerCli command.Cli) *cobra.Command { +// +// Deprecated: Do not import commands directly. They will be removed in a future release. +func NewPruneCommand(dockerCLI command.Cli) *cobra.Command { + return newPruneCommand(dockerCLI) +} + +func newPruneCommand(dockerCLI command.Cli) *cobra.Command { options := pruneOptions{filter: opts.NewFilterOpt()} cmd := &cobra.Command{ @@ -36,14 +42,14 @@ func NewPruneCommand(dockerCli command.Cli) *cobra.Command { Short: "Remove all stopped containers", Args: cli.NoArgs, RunE: func(cmd *cobra.Command, args []string) error { - spaceReclaimed, output, err := runPrune(cmd.Context(), dockerCli, options) + spaceReclaimed, output, err := runPrune(cmd.Context(), dockerCLI, options) if err != nil { return err } if output != "" { - fmt.Fprintln(dockerCli.Out(), output) + fmt.Fprintln(dockerCLI.Out(), output) } - fmt.Fprintln(dockerCli.Out(), "Total reclaimed space:", units.HumanSize(float64(spaceReclaimed))) + fmt.Fprintln(dockerCLI.Out(), "Total reclaimed space:", units.HumanSize(float64(spaceReclaimed))) return nil }, Annotations: map[string]string{"version": "1.25"}, diff --git a/cli/command/container/prune_test.go b/cli/command/container/prune_test.go index 76447a5fb..9227fe18f 100644 --- a/cli/command/container/prune_test.go +++ b/cli/command/container/prune_test.go @@ -20,7 +20,7 @@ func TestContainerPrunePromptTermination(t *testing.T) { return container.PruneReport{}, errors.New("fakeClient containerPruneFunc should not be called") }, }) - cmd := NewPruneCommand(cli) + cmd := newPruneCommand(cli) cmd.SetArgs([]string{}) cmd.SetOut(io.Discard) cmd.SetErr(io.Discard) diff --git a/cli/command/container/rename.go b/cli/command/container/rename.go index a871e38d1..2f028e872 100644 --- a/cli/command/container/rename.go +++ b/cli/command/container/rename.go @@ -18,7 +18,13 @@ type renameOptions struct { } // NewRenameCommand creates a new cobra.Command for `docker rename` -func NewRenameCommand(dockerCli command.Cli) *cobra.Command { +// +// Deprecated: Do not import commands directly. They will be removed in a future release. +func NewRenameCommand(dockerCLI command.Cli) *cobra.Command { + return newRenameCommand(dockerCLI) +} + +func newRenameCommand(dockerCLI command.Cli) *cobra.Command { var opts renameOptions cmd := &cobra.Command{ @@ -28,12 +34,12 @@ func NewRenameCommand(dockerCli command.Cli) *cobra.Command { RunE: func(cmd *cobra.Command, args []string) error { opts.oldName = args[0] opts.newName = args[1] - return runRename(cmd.Context(), dockerCli, &opts) + return runRename(cmd.Context(), dockerCLI, &opts) }, Annotations: map[string]string{ "aliases": "docker container rename, docker rename", }, - ValidArgsFunction: completion.ContainerNames(dockerCli, true), + ValidArgsFunction: completion.ContainerNames(dockerCLI, true), } return cmd } diff --git a/cli/command/container/rename_test.go b/cli/command/container/rename_test.go index 9a2cae4b3..2e14e771e 100644 --- a/cli/command/container/rename_test.go +++ b/cli/command/container/rename_test.go @@ -43,7 +43,7 @@ func TestRunRename(t *testing.T) { }, }) - cmd := NewRenameCommand(cli) + cmd := newRenameCommand(cli) cmd.SetOut(io.Discard) cmd.SetErr(io.Discard) cmd.SetArgs([]string{tc.oldName, tc.newName}) @@ -66,7 +66,7 @@ func TestRunRenameClientError(t *testing.T) { }, }) - cmd := NewRenameCommand(cli) + cmd := newRenameCommand(cli) cmd.SetOut(io.Discard) cmd.SetErr(io.Discard) cmd.SetArgs([]string{"oldName", "newName"}) diff --git a/cli/command/container/restart.go b/cli/command/container/restart.go index 072249b3e..b29c7811b 100644 --- a/cli/command/container/restart.go +++ b/cli/command/container/restart.go @@ -21,7 +21,13 @@ type restartOptions struct { } // NewRestartCommand creates a new cobra.Command for `docker restart` -func NewRestartCommand(dockerCli command.Cli) *cobra.Command { +// +// Deprecated: Do not import commands directly. They will be removed in a future release. +func NewRestartCommand(dockerCLI command.Cli) *cobra.Command { + return newRestartCommand(dockerCLI) +} + +func newRestartCommand(dockerCLI command.Cli) *cobra.Command { var opts restartOptions cmd := &cobra.Command{ @@ -34,12 +40,12 @@ func NewRestartCommand(dockerCli command.Cli) *cobra.Command { } opts.containers = args opts.timeoutChanged = cmd.Flags().Changed("timeout") || cmd.Flags().Changed("time") - return runRestart(cmd.Context(), dockerCli, &opts) + return runRestart(cmd.Context(), dockerCLI, &opts) }, Annotations: map[string]string{ "aliases": "docker container restart, docker restart", }, - ValidArgsFunction: completion.ContainerNames(dockerCli, true), + ValidArgsFunction: completion.ContainerNames(dockerCLI, true), } flags := cmd.Flags() diff --git a/cli/command/container/restart_test.go b/cli/command/container/restart_test.go index 3e5a6c957..7e93c246a 100644 --- a/cli/command/container/restart_test.go +++ b/cli/command/container/restart_test.go @@ -76,7 +76,7 @@ func TestRestart(t *testing.T) { }, Version: "1.36", }) - cmd := NewRestartCommand(cli) + cmd := newRestartCommand(cli) cmd.SetOut(io.Discard) cmd.SetErr(io.Discard) cmd.SetArgs(tc.args) diff --git a/cli/command/container/rm.go b/cli/command/container/rm.go index 8e6d9c88e..c4cb3464d 100644 --- a/cli/command/container/rm.go +++ b/cli/command/container/rm.go @@ -23,7 +23,13 @@ type rmOptions struct { } // NewRmCommand creates a new cobra.Command for `docker rm` -func NewRmCommand(dockerCli command.Cli) *cobra.Command { +// +// Deprecated: Do not import commands directly. They will be removed in a future release. +func NewRmCommand(dockerCLI command.Cli) *cobra.Command { + return newRmCommand(dockerCLI) +} + +func newRmCommand(dockerCLI command.Cli) *cobra.Command { var opts rmOptions cmd := &cobra.Command{ @@ -32,12 +38,12 @@ func NewRmCommand(dockerCli command.Cli) *cobra.Command { Args: cli.RequiresMinArgs(1), RunE: func(cmd *cobra.Command, args []string) error { opts.containers = args - return runRm(cmd.Context(), dockerCli, &opts) + return runRm(cmd.Context(), dockerCLI, &opts) }, Annotations: map[string]string{ "aliases": "docker container rm, docker container remove, docker rm", }, - ValidArgsFunction: completion.ContainerNames(dockerCli, true, func(ctr container.Summary) bool { + ValidArgsFunction: completion.ContainerNames(dockerCLI, true, func(ctr container.Summary) bool { return opts.force || ctr.State == container.StateExited || ctr.State == container.StateCreated }), } @@ -53,7 +59,7 @@ func NewRmCommand(dockerCli command.Cli) *cobra.Command { // top-level "docker rm", it also adds a "remove" alias to support // "docker container remove" in addition to "docker container rm". func newRemoveCommand(dockerCli command.Cli) *cobra.Command { - cmd := *NewRmCommand(dockerCli) + cmd := *newRmCommand(dockerCli) cmd.Aliases = []string{"rm", "remove"} return &cmd } diff --git a/cli/command/container/rm_test.go b/cli/command/container/rm_test.go index f4dbd6525..c39ff1366 100644 --- a/cli/command/container/rm_test.go +++ b/cli/command/container/rm_test.go @@ -41,7 +41,7 @@ func TestRemoveForce(t *testing.T) { }, Version: "1.36", }) - cmd := NewRmCommand(cli) + cmd := newRmCommand(cli) cmd.SetOut(io.Discard) cmd.SetErr(io.Discard) cmd.SetArgs(tc.args) diff --git a/cli/command/container/run.go b/cli/command/container/run.go index ccda0f936..ce9f617f9 100644 --- a/cli/command/container/run.go +++ b/cli/command/container/run.go @@ -28,7 +28,13 @@ type runOptions struct { } // NewRunCommand create a new `docker run` command -func NewRunCommand(dockerCli command.Cli) *cobra.Command { +// +// Deprecated: Do not import commands directly. They will be removed in a future release. +func NewRunCommand(dockerCLI command.Cli) *cobra.Command { + return newRunCommand(dockerCLI) +} + +func newRunCommand(dockerCLI command.Cli) *cobra.Command { var options runOptions var copts *containerOptions @@ -41,9 +47,9 @@ func NewRunCommand(dockerCli command.Cli) *cobra.Command { if len(args) > 1 { copts.Args = args[1:] } - return runRun(cmd.Context(), dockerCli, cmd.Flags(), &options, copts) + return runRun(cmd.Context(), dockerCLI, cmd.Flags(), &options, copts) }, - ValidArgsFunction: completion.ImageNames(dockerCli, 1), + ValidArgsFunction: completion.ImageNames(dockerCLI, 1), Annotations: map[string]string{ "category-top": "1", "aliases": "docker container run, docker run", @@ -68,11 +74,11 @@ func NewRunCommand(dockerCli command.Cli) *cobra.Command { // TODO(thaJeztah): consider adding platform as "image create option" on containerOptions addPlatformFlag(flags, &options.platform) - flags.BoolVar(&options.untrusted, "disable-content-trust", !dockerCli.ContentTrustEnabled(), "Skip image verification") + flags.BoolVar(&options.untrusted, "disable-content-trust", !dockerCLI.ContentTrustEnabled(), "Skip image verification") copts = addFlags(flags) _ = cmd.RegisterFlagCompletionFunc("detach-keys", completeDetachKeys) - addCompletions(cmd, dockerCli) + addCompletions(cmd, dockerCLI) flags.VisitAll(func(flag *pflag.Flag) { // Set a default completion function if none was set. We don't look diff --git a/cli/command/container/run_test.go b/cli/command/container/run_test.go index dff145d89..b92d831fd 100644 --- a/cli/command/container/run_test.go +++ b/cli/command/container/run_test.go @@ -40,7 +40,7 @@ func TestRunValidateFlags(t *testing.T) { }, } { t.Run(tc.name, func(t *testing.T) { - cmd := NewRunCommand(test.NewFakeCli(&fakeClient{})) + cmd := newRunCommand(test.NewFakeCli(&fakeClient{})) cmd.SetOut(io.Discard) cmd.SetErr(io.Discard) cmd.SetArgs(tc.args) @@ -64,7 +64,7 @@ func TestRunLabel(t *testing.T) { }, Version: "1.36", }) - cmd := NewRunCommand(fakeCLI) + cmd := newRunCommand(fakeCLI) cmd.SetArgs([]string{"--detach=true", "--label", "foo", "busybox"}) assert.NilError(t, cmd.Execute()) } @@ -111,7 +111,7 @@ func TestRunAttach(t *testing.T) { fc.SetIn(streams.NewIn(tty)) }) - cmd := NewRunCommand(fakeCLI) + cmd := newRunCommand(fakeCLI) cmd.SetArgs([]string{"-it", "busybox"}) cmd.SilenceUsage = true cmdErrC := make(chan error, 1) @@ -188,7 +188,7 @@ func TestRunAttachTermination(t *testing.T) { fc.SetIn(streams.NewIn(tty)) }) - cmd := NewRunCommand(fakeCLI) + cmd := newRunCommand(fakeCLI) cmd.SetArgs([]string{"-it", "busybox"}) cmd.SilenceUsage = true cmdErrC := make(chan error, 1) @@ -266,7 +266,7 @@ func TestRunPullTermination(t *testing.T) { Version: "1.30", }) - cmd := NewRunCommand(fakeCLI) + cmd := newRunCommand(fakeCLI) cmd.SetOut(io.Discard) cmd.SetErr(io.Discard) cmd.SetArgs([]string{"--pull", "always", "foobar:latest"}) @@ -335,7 +335,7 @@ func TestRunCommandWithContentTrustErrors(t *testing.T) { }, }, test.EnableContentTrust) fakeCLI.SetNotaryClient(tc.notaryFunc) - cmd := NewRunCommand(fakeCLI) + cmd := newRunCommand(fakeCLI) cmd.SetArgs(tc.args) cmd.SetOut(io.Discard) cmd.SetErr(io.Discard) diff --git a/cli/command/container/start.go b/cli/command/container/start.go index eb03723f2..c8e661593 100644 --- a/cli/command/container/start.go +++ b/cli/command/container/start.go @@ -28,7 +28,13 @@ type StartOptions struct { } // NewStartCommand creates a new cobra.Command for `docker start` +// +// Deprecated: Do not import commands directly. They will be removed in a future release. func NewStartCommand(dockerCli command.Cli) *cobra.Command { + return newStartCommand(dockerCli) +} + +func newStartCommand(dockerCli command.Cli) *cobra.Command { var opts StartOptions cmd := &cobra.Command{ diff --git a/cli/command/container/stats.go b/cli/command/container/stats.go index eeecb1b6c..6ba72ee06 100644 --- a/cli/command/container/stats.go +++ b/cli/command/container/stats.go @@ -64,7 +64,13 @@ type StatsOptions struct { } // NewStatsCommand creates a new [cobra.Command] for "docker stats". +// +// Deprecated: Do not import commands directly. They will be removed in a future release. func NewStatsCommand(dockerCLI command.Cli) *cobra.Command { + return newStatsCommand(dockerCLI) +} + +func newStatsCommand(dockerCLI command.Cli) *cobra.Command { options := StatsOptions{} cmd := &cobra.Command{ diff --git a/cli/command/container/stop.go b/cli/command/container/stop.go index 0f58c02ba..73806d244 100644 --- a/cli/command/container/stop.go +++ b/cli/command/container/stop.go @@ -21,7 +21,13 @@ type stopOptions struct { } // NewStopCommand creates a new cobra.Command for `docker stop` -func NewStopCommand(dockerCli command.Cli) *cobra.Command { +// +// Deprecated: Do not import commands directly. They will be removed in a future release. +func NewStopCommand(dockerCLI command.Cli) *cobra.Command { + return newStopCommand(dockerCLI) +} + +func newStopCommand(dockerCLI command.Cli) *cobra.Command { var opts stopOptions cmd := &cobra.Command{ @@ -34,12 +40,12 @@ func NewStopCommand(dockerCli command.Cli) *cobra.Command { } opts.containers = args opts.timeoutChanged = cmd.Flags().Changed("timeout") || cmd.Flags().Changed("time") - return runStop(cmd.Context(), dockerCli, &opts) + return runStop(cmd.Context(), dockerCLI, &opts) }, Annotations: map[string]string{ "aliases": "docker container stop, docker stop", }, - ValidArgsFunction: completion.ContainerNames(dockerCli, false), + ValidArgsFunction: completion.ContainerNames(dockerCLI, false), } flags := cmd.Flags() diff --git a/cli/command/container/stop_test.go b/cli/command/container/stop_test.go index 604c94784..d43b08095 100644 --- a/cli/command/container/stop_test.go +++ b/cli/command/container/stop_test.go @@ -77,7 +77,7 @@ func TestStop(t *testing.T) { }, Version: "1.36", }) - cmd := NewStopCommand(cli) + cmd := newStopCommand(cli) cmd.SetOut(io.Discard) cmd.SetErr(io.Discard) cmd.SetArgs(tc.args) diff --git a/cli/command/container/top.go b/cli/command/container/top.go index 411fcbbf7..d6a5970e3 100644 --- a/cli/command/container/top.go +++ b/cli/command/container/top.go @@ -19,7 +19,13 @@ type topOptions struct { } // NewTopCommand creates a new cobra.Command for `docker top` -func NewTopCommand(dockerCli command.Cli) *cobra.Command { +// +// Deprecated: Do not import commands directly. They will be removed in a future release. +func NewTopCommand(dockerCLI command.Cli) *cobra.Command { + return newTopCommand(dockerCLI) +} + +func newTopCommand(dockerCLI command.Cli) *cobra.Command { var opts topOptions cmd := &cobra.Command{ @@ -29,12 +35,12 @@ func NewTopCommand(dockerCli command.Cli) *cobra.Command { RunE: func(cmd *cobra.Command, args []string) error { opts.container = args[0] opts.args = args[1:] - return runTop(cmd.Context(), dockerCli, &opts) + return runTop(cmd.Context(), dockerCLI, &opts) }, Annotations: map[string]string{ "aliases": "docker container top, docker top", }, - ValidArgsFunction: completion.ContainerNames(dockerCli, false), + ValidArgsFunction: completion.ContainerNames(dockerCLI, false), } flags := cmd.Flags() diff --git a/cli/command/container/unpause.go b/cli/command/container/unpause.go index 89abcca5b..73138dabe 100644 --- a/cli/command/container/unpause.go +++ b/cli/command/container/unpause.go @@ -17,7 +17,13 @@ type unpauseOptions struct { } // NewUnpauseCommand creates a new cobra.Command for `docker unpause` +// +// Deprecated: Do not import commands directly. They will be removed in a future release. func NewUnpauseCommand(dockerCli command.Cli) *cobra.Command { + return newUnpauseCommand(dockerCli) +} + +func newUnpauseCommand(dockerCli command.Cli) *cobra.Command { var opts unpauseOptions cmd := &cobra.Command{ diff --git a/cli/command/container/update.go b/cli/command/container/update.go index 7fc9a6d4e..9e903ae08 100644 --- a/cli/command/container/update.go +++ b/cli/command/container/update.go @@ -37,7 +37,13 @@ type updateOptions struct { } // NewUpdateCommand creates a new cobra.Command for `docker update` -func NewUpdateCommand(dockerCli command.Cli) *cobra.Command { +// +// Deprecated: Do not import commands directly. They will be removed in a future release. +func NewUpdateCommand(dockerCLI command.Cli) *cobra.Command { + return newUpdateCommand(dockerCLI) +} + +func newUpdateCommand(dockerCLI command.Cli) *cobra.Command { var options updateOptions cmd := &cobra.Command{ @@ -47,12 +53,12 @@ func NewUpdateCommand(dockerCli command.Cli) *cobra.Command { RunE: func(cmd *cobra.Command, args []string) error { options.containers = args options.nFlag = cmd.Flags().NFlag() - return runUpdate(cmd.Context(), dockerCli, &options) + return runUpdate(cmd.Context(), dockerCLI, &options) }, Annotations: map[string]string{ "aliases": "docker container update, docker update", }, - ValidArgsFunction: completion.ContainerNames(dockerCli, true), + ValidArgsFunction: completion.ContainerNames(dockerCLI, true), } flags := cmd.Flags() diff --git a/cli/command/container/wait.go b/cli/command/container/wait.go index 89f2ba17a..95c389667 100644 --- a/cli/command/container/wait.go +++ b/cli/command/container/wait.go @@ -16,7 +16,13 @@ type waitOptions struct { } // NewWaitCommand creates a new cobra.Command for `docker wait` -func NewWaitCommand(dockerCli command.Cli) *cobra.Command { +// +// Deprecated: Do not import commands directly. They will be removed in a future release. +func NewWaitCommand(dockerCLI command.Cli) *cobra.Command { + return newWaitCommand(dockerCLI) +} + +func newWaitCommand(dockerCLI command.Cli) *cobra.Command { var opts waitOptions cmd := &cobra.Command{ @@ -25,12 +31,12 @@ func NewWaitCommand(dockerCli command.Cli) *cobra.Command { Args: cli.RequiresMinArgs(1), RunE: func(cmd *cobra.Command, args []string) error { opts.containers = args - return runWait(cmd.Context(), dockerCli, &opts) + return runWait(cmd.Context(), dockerCLI, &opts) }, Annotations: map[string]string{ "aliases": "docker container wait, docker wait", }, - ValidArgsFunction: completion.ContainerNames(dockerCli, false), + ValidArgsFunction: completion.ContainerNames(dockerCLI, false), } return cmd