From 44d96e9120bb2b20249d0ea94d651fc07b73eb9a Mon Sep 17 00:00:00 2001 From: Sebastiaan van Stijn Date: Thu, 29 Nov 2018 15:39:07 +0100 Subject: [PATCH] Fix yamldocs outputing `[flags]` in usage output A similar change was made in the CLI itself, but is not inherited by the code that generates the YAML docs. Before this patch is applied; ``` usage: docker container exec [OPTIONS] CONTAINER COMMAND [ARG...] [flags] ``` With this patch applied: ``` usage: docker container exec [OPTIONS] CONTAINER COMMAND [ARG...] ``` Signed-off-by: Sebastiaan van Stijn --- docs/yaml/generate.go | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/docs/yaml/generate.go b/docs/yaml/generate.go index c37ad64498..09550b2fad 100644 --- a/docs/yaml/generate.go +++ b/docs/yaml/generate.go @@ -22,6 +22,7 @@ func generateCliYaml(opts *options) error { dockerCli := command.NewDockerCli(stdin, stdout, stderr, false, nil) cmd := &cobra.Command{Use: "docker"} commands.AddCommands(cmd, dockerCli) + disableFlagsInUseLine(cmd) source := filepath.Join(opts.source, descriptionSourcePath) if err := loadLongDescription(cmd, source); err != nil { return err @@ -31,6 +32,23 @@ func generateCliYaml(opts *options) error { return GenYamlTree(cmd, opts.target) } +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 + }) +} + +// visitAll will traverse all commands from the root. +// This is different from the VisitAll of cobra.Command where only parents +// are checked. +func visitAll(root *cobra.Command, fn func(*cobra.Command)) { + for _, cmd := range root.Commands() { + visitAll(cmd, fn) + } + fn(root) +} + func loadLongDescription(cmd *cobra.Command, path ...string) error { for _, cmd := range cmd.Commands() { if cmd.Name() == "" {