diff --git a/docs/yaml/yaml.go b/docs/yaml/yaml.go index 5dc7164192..82c90973c0 100644 --- a/docs/yaml/yaml.go +++ b/docs/yaml/yaml.go @@ -25,6 +25,7 @@ type cmdOption struct { ExperimentalCLI bool Kubernetes bool Swarm bool + OSType string `yaml:"os_type,omitempty"` } type cmdDoc struct { @@ -48,6 +49,7 @@ type cmdDoc struct { ExperimentalCLI bool Kubernetes bool Swarm bool + OSType string `yaml:"os_type,omitempty"` } // GenYamlTree creates yaml structured ref files @@ -121,6 +123,9 @@ func GenYamlCustom(cmd *cobra.Command, w io.Writer) error { if _, ok := curr.Annotations["swarm"]; ok && !cliDoc.Swarm { cliDoc.Swarm = true } + if os, ok := curr.Annotations["ostype"]; ok && cliDoc.OSType == "" { + cliDoc.OSType = os + } } flags := cmd.NonInheritedFlags() @@ -207,6 +212,15 @@ func genFlagResult(flags *pflag.FlagSet) []cmdOption { opt.Swarm = true } + // Note that the annotation can have multiple ostypes set, however, multiple + // values are currently not used (and unlikely will). + // + // To simplify usage of the os_type property in the YAML, and for consistency + // with the same property for commands, we're only using the first ostype that's set. + if ostypes, ok := flag.Annotations["ostype"]; ok && len(opt.OSType) == 0 && len(ostypes) > 0 { + opt.OSType = ostypes[0] + } + result = append(result, opt) })