Skip to content

Commit

Permalink
Hide [flags] in usage output
Browse files Browse the repository at this point in the history
This patch hides the [flags] in the usage output of commands, using the
new `.DisableFlagsInUseLine` option, instead of the temporary workaround
added in 8e600e1

Before this change:

    docker run
    "docker run" requires at least 1 argument.
    See 'docker run --help'.

    Usage:  docker run [OPTIONS] IMAGE [COMMAND] [ARG...] [flags]

    Run a command in a new container

After this change:

    docker run
    "docker run" requires at least 1 argument.
    See 'docker run --help'.

    Usage:  docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

    Run a command in a new container

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
  • Loading branch information
thaJeztah committed May 19, 2018
1 parent 785d491 commit 812c492
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 15 deletions.
13 changes: 1 addition & 12 deletions cli/cobra.go
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down Expand Up @@ -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 }}
Expand Down
11 changes: 10 additions & 1 deletion cmd/docker/docker.go
Original file line number Diff line number Diff line change
Expand Up @@ -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)

Expand All @@ -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.
Expand Down
3 changes: 1 addition & 2 deletions docs/yaml/yaml.go
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down Expand Up @@ -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 {
Expand Down

0 comments on commit 812c492

Please sign in to comment.