1
0
mirror of https://github.com/docker/cli.git synced 2026-01-26 15:41:42 +03:00
Files
cli/internal/commands/commands.go
Sebastiaan van Stijn 570a17b3bc internal/commands: RegisterLegacy: remove redundant copy
The RegisterLegacy and Register functions register constructors for
commands, so we should expect them to be a fresh copy that is not
shared, which means that we can mutate the command in-place.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2025-08-21 10:47:26 +02:00

40 lines
1.2 KiB
Go

package commands
import (
"os"
"github.com/docker/cli/cli/command"
"github.com/spf13/cobra"
)
var commands []func(command.Cli) *cobra.Command
// Register pushes the passed in command into an internal queue which can
// be retrieved using the [Commands] function. It is designed to be called
// in an init function and is not safe for concurrent use.
func Register(f func(command.Cli) *cobra.Command) {
commands = append(commands, f)
}
// RegisterLegacy functions similarly to [Register], but it checks the
// "DOCKER_HIDE_LEGACY_COMMANDS" environment variable and if it has been
// set and is non-empty, the command will be hidden. It is designed to be called
// in an init function and is not safe for concurrent use.
func RegisterLegacy(f func(command.Cli) *cobra.Command) {
commands = append(commands, func(c command.Cli) *cobra.Command {
if os.Getenv("DOCKER_HIDE_LEGACY_COMMANDS") == "" {
return f(c)
}
cmd := f(c)
cmd.Hidden = true
cmd.Aliases = []string{}
return cmd
})
}
// Commands returns the internal queue holding registered commands added
// via [Register] and [RegisterLegacy].
func Commands() []func(command.Cli) *cobra.Command {
return commands
}