mirror of https://github.com/docker/cli.git
cli/command: merge DockerCliOption and InitializeOpt types
The cli/command package defined two option-types with the same signature. This patch creates a new type instead (CLIOption), and makes the existing types an alias for this (deprecating their old names). Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
This commit is contained in:
parent
7d92573852
commit
7af509c7f1
|
@ -83,7 +83,7 @@ func RunPlugin(dockerCli *command.DockerCli, plugin *cobra.Command, meta manager
|
||||||
cmd.SetContext(ctx)
|
cmd.SetContext(ctx)
|
||||||
closeOnCLISocketClose(cancel)
|
closeOnCLISocketClose(cancel)
|
||||||
|
|
||||||
var opts []command.InitializeOpt
|
var opts []command.CLIOption
|
||||||
if os.Getenv("DOCKER_CLI_PLUGIN_USE_DIAL_STDIO") != "" {
|
if os.Getenv("DOCKER_CLI_PLUGIN_USE_DIAL_STDIO") != "" {
|
||||||
opts = append(opts, withPluginClientConn(plugin.Name()))
|
opts = append(opts, withPluginClientConn(plugin.Name()))
|
||||||
}
|
}
|
||||||
|
@ -129,7 +129,7 @@ func Run(makeCmd func(command.Cli) *cobra.Command, meta manager.Metadata) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func withPluginClientConn(name string) command.InitializeOpt {
|
func withPluginClientConn(name string) command.CLIOption {
|
||||||
return command.WithInitializeClient(func(dockerCli *command.DockerCli) (client.APIClient, error) {
|
return command.WithInitializeClient(func(dockerCli *command.DockerCli) (client.APIClient, error) {
|
||||||
cmd := "docker"
|
cmd := "docker"
|
||||||
if x := os.Getenv(manager.ReexecEnvvar); x != "" {
|
if x := os.Getenv(manager.ReexecEnvvar); x != "" {
|
||||||
|
|
|
@ -176,7 +176,7 @@ func (tcmd *TopLevelCommand) HandleGlobalFlags() (*cobra.Command, []string, erro
|
||||||
}
|
}
|
||||||
|
|
||||||
// Initialize finalises global option parsing and initializes the docker client.
|
// Initialize finalises global option parsing and initializes the docker client.
|
||||||
func (tcmd *TopLevelCommand) Initialize(ops ...command.InitializeOpt) error {
|
func (tcmd *TopLevelCommand) Initialize(ops ...command.CLIOption) error {
|
||||||
tcmd.opts.SetDefaultOptions(tcmd.flags)
|
tcmd.opts.SetDefaultOptions(tcmd.flags)
|
||||||
return tcmd.dockerCli.Initialize(tcmd.opts, ops...)
|
return tcmd.dockerCli.Initialize(tcmd.opts, ops...)
|
||||||
}
|
}
|
||||||
|
|
|
@ -49,7 +49,7 @@ type Cli interface {
|
||||||
Client() client.APIClient
|
Client() client.APIClient
|
||||||
Streams
|
Streams
|
||||||
SetIn(in *streams.In)
|
SetIn(in *streams.In)
|
||||||
Apply(ops ...DockerCliOption) error
|
Apply(ops ...CLIOption) error
|
||||||
ConfigFile() *configfile.ConfigFile
|
ConfigFile() *configfile.ConfigFile
|
||||||
ServerInfo() ServerInfo
|
ServerInfo() ServerInfo
|
||||||
NotaryClient(imgRefAndAuth trust.ImageRefAndAuth, actions []string) (notaryclient.Repository, error)
|
NotaryClient(imgRefAndAuth trust.ImageRefAndAuth, actions []string) (notaryclient.Repository, error)
|
||||||
|
@ -194,11 +194,8 @@ func (cli *DockerCli) RegistryClient(allowInsecure bool) registryclient.Registry
|
||||||
return registryclient.NewRegistryClient(resolver, UserAgent(), allowInsecure)
|
return registryclient.NewRegistryClient(resolver, UserAgent(), allowInsecure)
|
||||||
}
|
}
|
||||||
|
|
||||||
// InitializeOpt is the type of the functional options passed to DockerCli.Initialize
|
|
||||||
type InitializeOpt func(dockerCli *DockerCli) error
|
|
||||||
|
|
||||||
// WithInitializeClient is passed to DockerCli.Initialize by callers who wish to set a particular API Client for use by the CLI.
|
// WithInitializeClient is passed to DockerCli.Initialize by callers who wish to set a particular API Client for use by the CLI.
|
||||||
func WithInitializeClient(makeClient func(dockerCli *DockerCli) (client.APIClient, error)) InitializeOpt {
|
func WithInitializeClient(makeClient func(dockerCli *DockerCli) (client.APIClient, error)) CLIOption {
|
||||||
return func(dockerCli *DockerCli) error {
|
return func(dockerCli *DockerCli) error {
|
||||||
var err error
|
var err error
|
||||||
dockerCli.client, err = makeClient(dockerCli)
|
dockerCli.client, err = makeClient(dockerCli)
|
||||||
|
@ -208,7 +205,7 @@ func WithInitializeClient(makeClient func(dockerCli *DockerCli) (client.APIClien
|
||||||
|
|
||||||
// Initialize the dockerCli runs initialization that must happen after command
|
// Initialize the dockerCli runs initialization that must happen after command
|
||||||
// line flags are parsed.
|
// line flags are parsed.
|
||||||
func (cli *DockerCli) Initialize(opts *cliflags.ClientOptions, ops ...InitializeOpt) error {
|
func (cli *DockerCli) Initialize(opts *cliflags.ClientOptions, ops ...CLIOption) error {
|
||||||
for _, o := range ops {
|
for _, o := range ops {
|
||||||
if err := o(cli); err != nil {
|
if err := o(cli); err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -450,7 +447,7 @@ func (cli *DockerCli) initialize() error {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Apply all the operation on the cli
|
// Apply all the operation on the cli
|
||||||
func (cli *DockerCli) Apply(ops ...DockerCliOption) error {
|
func (cli *DockerCli) Apply(ops ...CLIOption) error {
|
||||||
for _, op := range ops {
|
for _, op := range ops {
|
||||||
if err := op(cli); err != nil {
|
if err := op(cli); err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -479,8 +476,8 @@ type ServerInfo struct {
|
||||||
// NewDockerCli returns a DockerCli instance with all operators applied on it.
|
// NewDockerCli returns a DockerCli instance with all operators applied on it.
|
||||||
// It applies by default the standard streams, and the content trust from
|
// It applies by default the standard streams, and the content trust from
|
||||||
// environment.
|
// environment.
|
||||||
func NewDockerCli(ops ...DockerCliOption) (*DockerCli, error) {
|
func NewDockerCli(ops ...CLIOption) (*DockerCli, error) {
|
||||||
defaultOps := []DockerCliOption{
|
defaultOps := []CLIOption{
|
||||||
WithContentTrustFromEnv(),
|
WithContentTrustFromEnv(),
|
||||||
WithDefaultContextStoreConfig(),
|
WithDefaultContextStoreConfig(),
|
||||||
WithStandardStreams(),
|
WithStandardStreams(),
|
||||||
|
|
|
@ -10,11 +10,21 @@ import (
|
||||||
"github.com/moby/term"
|
"github.com/moby/term"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// CLIOption applies a modification on a DockerCli.
|
||||||
|
type CLIOption func(cli *DockerCli) error
|
||||||
|
|
||||||
// DockerCliOption applies a modification on a DockerCli.
|
// DockerCliOption applies a modification on a DockerCli.
|
||||||
type DockerCliOption func(cli *DockerCli) error
|
//
|
||||||
|
// Deprecated: use [CLIOption] instead.
|
||||||
|
type DockerCliOption = CLIOption
|
||||||
|
|
||||||
|
// InitializeOpt is the type of the functional options passed to DockerCli.Initialize
|
||||||
|
//
|
||||||
|
// Deprecated: use [CLIOption] instead.
|
||||||
|
type InitializeOpt = CLIOption
|
||||||
|
|
||||||
// WithStandardStreams sets a cli in, out and err streams with the standard streams.
|
// WithStandardStreams sets a cli in, out and err streams with the standard streams.
|
||||||
func WithStandardStreams() DockerCliOption {
|
func WithStandardStreams() CLIOption {
|
||||||
return func(cli *DockerCli) error {
|
return func(cli *DockerCli) error {
|
||||||
// Set terminal emulation based on platform as required.
|
// Set terminal emulation based on platform as required.
|
||||||
stdin, stdout, stderr := term.StdStreams()
|
stdin, stdout, stderr := term.StdStreams()
|
||||||
|
@ -26,7 +36,7 @@ func WithStandardStreams() DockerCliOption {
|
||||||
}
|
}
|
||||||
|
|
||||||
// WithCombinedStreams uses the same stream for the output and error streams.
|
// WithCombinedStreams uses the same stream for the output and error streams.
|
||||||
func WithCombinedStreams(combined io.Writer) DockerCliOption {
|
func WithCombinedStreams(combined io.Writer) CLIOption {
|
||||||
return func(cli *DockerCli) error {
|
return func(cli *DockerCli) error {
|
||||||
cli.out = streams.NewOut(combined)
|
cli.out = streams.NewOut(combined)
|
||||||
cli.err = combined
|
cli.err = combined
|
||||||
|
@ -35,7 +45,7 @@ func WithCombinedStreams(combined io.Writer) DockerCliOption {
|
||||||
}
|
}
|
||||||
|
|
||||||
// WithInputStream sets a cli input stream.
|
// WithInputStream sets a cli input stream.
|
||||||
func WithInputStream(in io.ReadCloser) DockerCliOption {
|
func WithInputStream(in io.ReadCloser) CLIOption {
|
||||||
return func(cli *DockerCli) error {
|
return func(cli *DockerCli) error {
|
||||||
cli.in = streams.NewIn(in)
|
cli.in = streams.NewIn(in)
|
||||||
return nil
|
return nil
|
||||||
|
@ -43,7 +53,7 @@ func WithInputStream(in io.ReadCloser) DockerCliOption {
|
||||||
}
|
}
|
||||||
|
|
||||||
// WithOutputStream sets a cli output stream.
|
// WithOutputStream sets a cli output stream.
|
||||||
func WithOutputStream(out io.Writer) DockerCliOption {
|
func WithOutputStream(out io.Writer) CLIOption {
|
||||||
return func(cli *DockerCli) error {
|
return func(cli *DockerCli) error {
|
||||||
cli.out = streams.NewOut(out)
|
cli.out = streams.NewOut(out)
|
||||||
return nil
|
return nil
|
||||||
|
@ -51,7 +61,7 @@ func WithOutputStream(out io.Writer) DockerCliOption {
|
||||||
}
|
}
|
||||||
|
|
||||||
// WithErrorStream sets a cli error stream.
|
// WithErrorStream sets a cli error stream.
|
||||||
func WithErrorStream(err io.Writer) DockerCliOption {
|
func WithErrorStream(err io.Writer) CLIOption {
|
||||||
return func(cli *DockerCli) error {
|
return func(cli *DockerCli) error {
|
||||||
cli.err = err
|
cli.err = err
|
||||||
return nil
|
return nil
|
||||||
|
@ -59,7 +69,7 @@ func WithErrorStream(err io.Writer) DockerCliOption {
|
||||||
}
|
}
|
||||||
|
|
||||||
// WithContentTrustFromEnv enables content trust on a cli from environment variable DOCKER_CONTENT_TRUST value.
|
// WithContentTrustFromEnv enables content trust on a cli from environment variable DOCKER_CONTENT_TRUST value.
|
||||||
func WithContentTrustFromEnv() DockerCliOption {
|
func WithContentTrustFromEnv() CLIOption {
|
||||||
return func(cli *DockerCli) error {
|
return func(cli *DockerCli) error {
|
||||||
cli.contentTrust = false
|
cli.contentTrust = false
|
||||||
if e := os.Getenv("DOCKER_CONTENT_TRUST"); e != "" {
|
if e := os.Getenv("DOCKER_CONTENT_TRUST"); e != "" {
|
||||||
|
@ -73,7 +83,7 @@ func WithContentTrustFromEnv() DockerCliOption {
|
||||||
}
|
}
|
||||||
|
|
||||||
// WithContentTrust enables content trust on a cli.
|
// WithContentTrust enables content trust on a cli.
|
||||||
func WithContentTrust(enabled bool) DockerCliOption {
|
func WithContentTrust(enabled bool) CLIOption {
|
||||||
return func(cli *DockerCli) error {
|
return func(cli *DockerCli) error {
|
||||||
cli.contentTrust = enabled
|
cli.contentTrust = enabled
|
||||||
return nil
|
return nil
|
||||||
|
@ -81,7 +91,7 @@ func WithContentTrust(enabled bool) DockerCliOption {
|
||||||
}
|
}
|
||||||
|
|
||||||
// WithDefaultContextStoreConfig configures the cli to use the default context store configuration.
|
// WithDefaultContextStoreConfig configures the cli to use the default context store configuration.
|
||||||
func WithDefaultContextStoreConfig() DockerCliOption {
|
func WithDefaultContextStoreConfig() CLIOption {
|
||||||
return func(cli *DockerCli) error {
|
return func(cli *DockerCli) error {
|
||||||
cli.contextStoreConfig = DefaultContextStoreConfig()
|
cli.contextStoreConfig = DefaultContextStoreConfig()
|
||||||
return nil
|
return nil
|
||||||
|
@ -89,7 +99,7 @@ func WithDefaultContextStoreConfig() DockerCliOption {
|
||||||
}
|
}
|
||||||
|
|
||||||
// WithAPIClient configures the cli to use the given API client.
|
// WithAPIClient configures the cli to use the given API client.
|
||||||
func WithAPIClient(c client.APIClient) DockerCliOption {
|
func WithAPIClient(c client.APIClient) CLIOption {
|
||||||
return func(cli *DockerCli) error {
|
return func(cli *DockerCli) error {
|
||||||
cli.client = c
|
cli.client = c
|
||||||
return nil
|
return nil
|
||||||
|
|
Loading…
Reference in New Issue