diff --git a/cobraadaptor/adaptor.go b/cobraadaptor/adaptor.go index 07ff8124b0..35b77b47e1 100644 --- a/cobraadaptor/adaptor.go +++ b/cobraadaptor/adaptor.go @@ -18,17 +18,21 @@ type CobraAdaptor struct { // NewCobraAdaptor returns a new handler func NewCobraAdaptor(clientFlags *cliflags.ClientFlags) CobraAdaptor { - var rootCmd = &cobra.Command{ - Use: "docker", - } - rootCmd.SetUsageTemplate(usageTemplate) - stdin, stdout, stderr := term.StdStreams() dockerCli := client.NewDockerCli(stdin, stdout, stderr, clientFlags) + var rootCmd = &cobra.Command{ + Use: "docker", + SilenceUsage: true, + SilenceErrors: true, + } + rootCmd.SetUsageTemplate(usageTemplate) + rootCmd.SetHelpTemplate(helpTemplate) + rootCmd.SetOutput(stdout) rootCmd.AddCommand( volume.NewVolumeCommand(dockerCli), ) + return CobraAdaptor{ rootCmd: rootCmd, dockerCli: dockerCli, @@ -64,20 +68,24 @@ func (c CobraAdaptor) Command(name string) func(...string) error { return nil } -var usageTemplate = `Usage: {{if .Runnable}}{{if .HasFlags}}{{appendIfNotPresent .UseLine "[OPTIONS]"}}{{else}}{{.UseLine}}{{end}}{{end}}{{if .HasSubCommands}}{{ .CommandPath}} COMMAND {{end}}{{if gt .Aliases 0}} +var usageTemplate = `Usage: {{if not .HasSubCommands}}{{if .HasLocalFlags}}{{appendIfNotPresent .UseLine "[OPTIONS]"}}{{else}}{{.UseLine}}{{end}}{{end}}{{if .HasSubCommands}}{{ .CommandPath}} COMMAND{{end}} + +{{with or .Long .Short }}{{. | trim}}{{end}}{{if gt .Aliases 0}} Aliases: - {{.NameAndAliases}} -{{end}}{{if .HasExample}} + {{.NameAndAliases}}{{end}}{{if .HasExample}} Examples: -{{ .Example }}{{end}}{{ if .HasLocalFlags}} +{{ .Example }}{{end}}{{if .HasFlags}} Options: -{{.LocalFlags.FlagUsages | trimRightSpace}}{{end}}{{ if .HasAvailableSubCommands}} +{{.Flags.FlagUsages | trimRightSpace}}{{end}}{{ if .HasAvailableSubCommands}} Commands:{{range .Commands}}{{if .IsAvailableCommand}} {{rpad .Name .NamePadding }} {{.Short}}{{end}}{{end}}{{end}}{{ if .HasSubCommands }} Run '{{.CommandPath}} COMMAND --help' for more information on a command.{{end}} ` + +var helpTemplate = ` +{{if or .Runnable .HasSubCommands}}{{.UsageString}}{{end}}` diff --git a/required.go b/required.go index 6b83fadde1..db1a98bd52 100644 --- a/required.go +++ b/required.go @@ -21,3 +21,17 @@ func MinRequiredArgs(args []string, min int, cmd *cobra.Command) error { cmd.Short, ) } + +// AcceptsNoArgs returns an error message if there are args +func AcceptsNoArgs(args []string, cmd *cobra.Command) error { + if len(args) == 0 { + return nil + } + + return fmt.Errorf( + "\"%s\" accepts no argument(s).\n\nUsage: %s\n\n%s", + cmd.CommandPath(), + cmd.UseLine(), + cmd.Short, + ) +} diff --git a/usage.go b/usage.go index 1ef6a35dec..9ddc17326a 100644 --- a/usage.go +++ b/usage.go @@ -48,7 +48,6 @@ var DockerCommandUsage = []Command{ {"unpause", "Unpause all processes within a container"}, {"update", "Update configuration of one or more containers"}, {"version", "Show the Docker version information"}, - {"volume", "Manage Docker volumes"}, {"wait", "Block until a container stops, then print its exit code"}, }