mirror of https://github.com/docker/cli.git
Update unit tests for new cobra root command.
Cleanup cobra integration Update windows files for cobra and pflags Cleanup SetupRootcmd, and remove unnecessary SetFlagErrorFunc. Use cobra command traversal Signed-off-by: Daniel Nephin <dnephin@docker.com>
This commit is contained in:
parent
82a8cc1556
commit
fc1a3d79f8
|
@ -1,81 +1,17 @@
|
||||||
package cobraadaptor
|
package cobraadaptor
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/docker/docker/api/client"
|
"fmt"
|
||||||
"github.com/docker/docker/api/client/container"
|
|
||||||
"github.com/docker/docker/api/client/image"
|
|
||||||
"github.com/docker/docker/api/client/network"
|
|
||||||
"github.com/docker/docker/api/client/node"
|
|
||||||
"github.com/docker/docker/api/client/plugin"
|
|
||||||
"github.com/docker/docker/api/client/registry"
|
|
||||||
"github.com/docker/docker/api/client/service"
|
|
||||||
"github.com/docker/docker/api/client/stack"
|
|
||||||
"github.com/docker/docker/api/client/swarm"
|
|
||||||
"github.com/docker/docker/api/client/system"
|
|
||||||
"github.com/docker/docker/api/client/volume"
|
|
||||||
"github.com/docker/docker/cli"
|
|
||||||
"github.com/spf13/cobra"
|
"github.com/spf13/cobra"
|
||||||
)
|
)
|
||||||
|
|
||||||
// SetupRootCommand sets default usage, help, and error handling for the
|
// SetupRootCommand sets default usage, help, and error handling for the
|
||||||
// root command.
|
// root command.
|
||||||
// TODO: move to cmd/docker/docker?
|
func SetupRootCommand(rootCmd *cobra.Command) {
|
||||||
// TODO: split into common setup and client setup
|
|
||||||
func SetupRootCommand(rootCmd *cobra.Command, dockerCli *client.DockerCli) {
|
|
||||||
rootCmd.SetUsageTemplate(usageTemplate)
|
rootCmd.SetUsageTemplate(usageTemplate)
|
||||||
rootCmd.SetHelpTemplate(helpTemplate)
|
rootCmd.SetHelpTemplate(helpTemplate)
|
||||||
rootCmd.SetFlagErrorFunc(cli.FlagErrorFunc)
|
rootCmd.SetFlagErrorFunc(FlagErrorFunc)
|
||||||
rootCmd.SetOutput(dockerCli.Out())
|
|
||||||
rootCmd.AddCommand(
|
|
||||||
node.NewNodeCommand(dockerCli),
|
|
||||||
service.NewServiceCommand(dockerCli),
|
|
||||||
stack.NewStackCommand(dockerCli),
|
|
||||||
stack.NewTopLevelDeployCommand(dockerCli),
|
|
||||||
swarm.NewSwarmCommand(dockerCli),
|
|
||||||
container.NewAttachCommand(dockerCli),
|
|
||||||
container.NewCommitCommand(dockerCli),
|
|
||||||
container.NewCopyCommand(dockerCli),
|
|
||||||
container.NewCreateCommand(dockerCli),
|
|
||||||
container.NewDiffCommand(dockerCli),
|
|
||||||
container.NewExecCommand(dockerCli),
|
|
||||||
container.NewExportCommand(dockerCli),
|
|
||||||
container.NewKillCommand(dockerCli),
|
|
||||||
container.NewLogsCommand(dockerCli),
|
|
||||||
container.NewPauseCommand(dockerCli),
|
|
||||||
container.NewPortCommand(dockerCli),
|
|
||||||
container.NewPsCommand(dockerCli),
|
|
||||||
container.NewRenameCommand(dockerCli),
|
|
||||||
container.NewRestartCommand(dockerCli),
|
|
||||||
container.NewRmCommand(dockerCli),
|
|
||||||
container.NewRunCommand(dockerCli),
|
|
||||||
container.NewStartCommand(dockerCli),
|
|
||||||
container.NewStatsCommand(dockerCli),
|
|
||||||
container.NewStopCommand(dockerCli),
|
|
||||||
container.NewTopCommand(dockerCli),
|
|
||||||
container.NewUnpauseCommand(dockerCli),
|
|
||||||
container.NewUpdateCommand(dockerCli),
|
|
||||||
container.NewWaitCommand(dockerCli),
|
|
||||||
image.NewBuildCommand(dockerCli),
|
|
||||||
image.NewHistoryCommand(dockerCli),
|
|
||||||
image.NewImagesCommand(dockerCli),
|
|
||||||
image.NewLoadCommand(dockerCli),
|
|
||||||
image.NewRemoveCommand(dockerCli),
|
|
||||||
image.NewSaveCommand(dockerCli),
|
|
||||||
image.NewPullCommand(dockerCli),
|
|
||||||
image.NewPushCommand(dockerCli),
|
|
||||||
image.NewSearchCommand(dockerCli),
|
|
||||||
image.NewImportCommand(dockerCli),
|
|
||||||
image.NewTagCommand(dockerCli),
|
|
||||||
network.NewNetworkCommand(dockerCli),
|
|
||||||
system.NewEventsCommand(dockerCli),
|
|
||||||
system.NewInspectCommand(dockerCli),
|
|
||||||
registry.NewLoginCommand(dockerCli),
|
|
||||||
registry.NewLogoutCommand(dockerCli),
|
|
||||||
system.NewVersionCommand(dockerCli),
|
|
||||||
volume.NewVolumeCommand(dockerCli),
|
|
||||||
system.NewInfoCommand(dockerCli),
|
|
||||||
)
|
|
||||||
plugin.NewPluginCommand(rootCmd, dockerCli)
|
|
||||||
|
|
||||||
rootCmd.PersistentFlags().BoolP("help", "h", false, "Print usage")
|
rootCmd.PersistentFlags().BoolP("help", "h", false, "Print usage")
|
||||||
rootCmd.PersistentFlags().MarkShorthandDeprecated("help", "please use --help")
|
rootCmd.PersistentFlags().MarkShorthandDeprecated("help", "please use --help")
|
||||||
|
@ -87,6 +23,20 @@ func (c CobraAdaptor) GetRootCommand() *cobra.Command {
|
||||||
return c.rootCmd
|
return c.rootCmd
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// FlagErrorFunc prints an error messages which matches the format of the
|
||||||
|
// docker/docker/cli error messages
|
||||||
|
func FlagErrorFunc(cmd *cobra.Command, err error) error {
|
||||||
|
if err == nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
usage := ""
|
||||||
|
if cmd.HasSubCommands() {
|
||||||
|
usage = "\n\n" + cmd.UsageString()
|
||||||
|
}
|
||||||
|
return fmt.Errorf("%s\nSee '%s --help'.%s", err, cmd.CommandPath(), usage)
|
||||||
|
}
|
||||||
|
|
||||||
var usageTemplate = `Usage: {{if not .HasSubCommands}}{{.UseLine}}{{end}}{{if .HasSubCommands}}{{ .CommandPath}} COMMAND{{end}}
|
var usageTemplate = `Usage: {{if not .HasSubCommands}}{{.UseLine}}{{end}}{{if .HasSubCommands}}{{ .CommandPath}} COMMAND{{end}}
|
||||||
|
|
||||||
{{ .Short | trim }}{{if gt .Aliases 0}}
|
{{ .Short | trim }}{{if gt .Aliases 0}}
|
||||||
|
|
|
@ -1,21 +0,0 @@
|
||||||
package cli
|
|
||||||
|
|
||||||
import (
|
|
||||||
"fmt"
|
|
||||||
|
|
||||||
"github.com/spf13/cobra"
|
|
||||||
)
|
|
||||||
|
|
||||||
// FlagErrorFunc prints an error messages which matches the format of the
|
|
||||||
// docker/docker/cli error messages
|
|
||||||
func FlagErrorFunc(cmd *cobra.Command, err error) error {
|
|
||||||
if err == nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
usage := ""
|
|
||||||
if cmd.HasSubCommands() {
|
|
||||||
usage = "\n\n" + cmd.UsageString()
|
|
||||||
}
|
|
||||||
return fmt.Errorf("%s\nSee '%s --help'.%s", err, cmd.CommandPath(), usage)
|
|
||||||
}
|
|
|
@ -43,9 +43,7 @@ type CommonOptions struct {
|
||||||
|
|
||||||
// NewCommonOptions returns a new CommonOptions
|
// NewCommonOptions returns a new CommonOptions
|
||||||
func NewCommonOptions() *CommonOptions {
|
func NewCommonOptions() *CommonOptions {
|
||||||
return &CommonOptions{
|
return &CommonOptions{}
|
||||||
TLSOptions: &tlsconfig.Options{},
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// InstallFlags adds flags for the common options on the FlagSet
|
// InstallFlags adds flags for the common options on the FlagSet
|
||||||
|
@ -61,13 +59,14 @@ func (commonOpts *CommonOptions) InstallFlags(flags *pflag.FlagSet) {
|
||||||
|
|
||||||
// TODO use flag flags.String("identity"}, "i", "", "Path to libtrust key file")
|
// TODO use flag flags.String("identity"}, "i", "", "Path to libtrust key file")
|
||||||
|
|
||||||
|
commonOpts.TLSOptions = &tlsconfig.Options{}
|
||||||
tlsOptions := commonOpts.TLSOptions
|
tlsOptions := commonOpts.TLSOptions
|
||||||
flags.StringVar(&tlsOptions.CAFile, "tlscacert", filepath.Join(dockerCertPath, DefaultCaFile), "Trust certs signed only by this CA")
|
flags.StringVar(&tlsOptions.CAFile, "tlscacert", filepath.Join(dockerCertPath, DefaultCaFile), "Trust certs signed only by this CA")
|
||||||
flags.StringVar(&tlsOptions.CertFile, "tlscert", filepath.Join(dockerCertPath, DefaultCertFile), "Path to TLS certificate file")
|
flags.StringVar(&tlsOptions.CertFile, "tlscert", filepath.Join(dockerCertPath, DefaultCertFile), "Path to TLS certificate file")
|
||||||
flags.StringVar(&tlsOptions.KeyFile, "tlskey", filepath.Join(dockerCertPath, DefaultKeyFile), "Path to TLS key file")
|
flags.StringVar(&tlsOptions.KeyFile, "tlskey", filepath.Join(dockerCertPath, DefaultKeyFile), "Path to TLS key file")
|
||||||
|
|
||||||
hostOpt := opts.NewNamedListOptsRef("hosts", &commonOpts.Hosts, opts.ValidateHost)
|
hostOpt := opts.NewNamedListOptsRef("hosts", &commonOpts.Hosts, opts.ValidateHost)
|
||||||
flags.VarP(hostOpt, "-host", "H", "Daemon socket(s) to connect to")
|
flags.VarP(hostOpt, "host", "H", "Daemon socket(s) to connect to")
|
||||||
}
|
}
|
||||||
|
|
||||||
// SetDefaultOptions sets default values for options after flag parsing is
|
// SetDefaultOptions sets default values for options after flag parsing is
|
||||||
|
|
Loading…
Reference in New Issue