diff --git a/cli/cobra.go b/cli/cobra.go index 6c4a8c4bf6..1b5809e9e5 100644 --- a/cli/cobra.go +++ b/cli/cobra.go @@ -17,7 +17,6 @@ func SetupRootCommand(rootCmd *cobra.Command) { cobra.AddTemplateFunc("operationSubCommands", operationSubCommands) cobra.AddTemplateFunc("managementSubCommands", managementSubCommands) cobra.AddTemplateFunc("wrappedFlagUsages", wrappedFlagUsages) - cobra.AddTemplateFunc("useLine", UseLine) rootCmd.SetUsageTemplate(usageTemplate) rootCmd.SetHelpTemplate(helpTemplate) @@ -100,19 +99,9 @@ func managementSubCommands(cmd *cobra.Command) []*cobra.Command { return cmds } -// UseLine returns the usage line for a command. This implementation is different -// from the default Command.UseLine in that it does not add a `[flags]` to the -// end of the line. -func UseLine(cmd *cobra.Command) string { - if cmd.HasParent() { - return cmd.Parent().CommandPath() + " " + cmd.Use - } - return cmd.Use -} - var usageTemplate = `Usage: -{{- if not .HasSubCommands}} {{ useLine . }}{{end}} +{{- if not .HasSubCommands}} {{.UseLine}}{{end}} {{- if .HasSubCommands}} {{ .CommandPath}} COMMAND{{end}} {{ .Short | trim }} diff --git a/cmd/docker/docker.go b/cmd/docker/docker.go index 24def2e00e..68136657d9 100644 --- a/cmd/docker/docker.go +++ b/cmd/docker/docker.go @@ -41,7 +41,8 @@ func newDockerCommand(dockerCli *command.DockerCli) *cobra.Command { } return isSupported(cmd, dockerCli) }, - Version: fmt.Sprintf("%s, build %s", cli.Version, cli.GitCommit), + Version: fmt.Sprintf("%s, build %s", cli.Version, cli.GitCommit), + DisableFlagsInUseLine: true, } cli.SetupRootCommand(cmd) @@ -57,11 +58,19 @@ func newDockerCommand(dockerCli *command.DockerCli) *cobra.Command { cmd.SetOutput(dockerCli.Out()) commands.AddCommands(cmd, dockerCli) + disableFlagsInUseLine(cmd) setValidateArgs(dockerCli, cmd, flags, opts) return cmd } +func disableFlagsInUseLine(cmd *cobra.Command) { + visitAll(cmd, func(ccmd *cobra.Command) { + // do not add a `[flags]` to the end of the usage line. + ccmd.DisableFlagsInUseLine = true + }) +} + func setFlagErrorFunc(dockerCli *command.DockerCli, cmd *cobra.Command, flags *pflag.FlagSet, opts *cliflags.ClientOptions) { // When invoking `docker stack --nonsense`, we need to make sure FlagErrorFunc return appropriate // output if the feature is not supported. diff --git a/docs/yaml/yaml.go b/docs/yaml/yaml.go index 8512be339b..5dc7164192 100644 --- a/docs/yaml/yaml.go +++ b/docs/yaml/yaml.go @@ -8,7 +8,6 @@ import ( "sort" "strings" - "github.com/docker/cli/cli" "github.com/spf13/cobra" "github.com/spf13/pflag" yaml "gopkg.in/yaml.v2" @@ -96,7 +95,7 @@ func GenYamlCustom(cmd *cobra.Command, w io.Writer) error { } if cmd.Runnable() { - cliDoc.Usage = cli.UseLine(cmd) + cliDoc.Usage = cmd.UseLine() } if len(cmd.Example) > 0 {