diff --git a/internal/docs/man.go b/internal/docs/man.go index 60caa8443..1643fdd98 100644 --- a/internal/docs/man.go +++ b/internal/docs/man.go @@ -150,15 +150,7 @@ func manPrintFlags(buf *bytes.Buffer, flags *pflag.FlagSet) { buf.WriteString(fmt.Sprintf("`--%s`", flag.Name)) } - defval := "" - hiddenDefs := map[string]bool{ - "false": true, - "": true, - "[]": true, - } - if !hiddenDefs[flag.DefValue] { - defval = fmt.Sprintf(" (Default: %s)", flag.Value) - } + defval := getDefaultValueDisplayString(flag) if varname == "" && defval != "" { buf.WriteString(fmt.Sprintf(" `%s`\n", strings.TrimSpace(defval))) diff --git a/internal/docs/markdown.go b/internal/docs/markdown.go index 9c359e99b..6e82aab08 100644 --- a/internal/docs/markdown.go +++ b/internal/docs/markdown.go @@ -46,6 +46,30 @@ func hasNonHelpFlags(fs *pflag.FlagSet) (found bool) { return } +var hiddenFlagDefaults = map[string]bool{ + "false": true, + "": true, + "[]": true, + "duration": true, +} + +var defaultValFormats = map[string]string{ + "string": " (default \"%s\")", +} + +func getDefaultValueDisplayString(f *pflag.Flag) string { + + if hiddenFlagDefaults[f.DefValue] || hiddenFlagDefaults[f.Value.Type()] { + return "" + } + + if dvf, found := defaultValFormats[f.Value.Type()]; found { + return fmt.Sprintf(dvf, f.Value) + } + return fmt.Sprintf(" (default: %s)", f.Value) + +} + type flagView struct { Name string Varname string @@ -56,8 +80,8 @@ type flagView struct { var flagsTemplate = `
{{ range . }} -
{{ if .Shorthand }}-{{.Shorthand}}, {{ end -}} - --{{.Name}}{{ if .Varname }} <{{.Varname}}>{{ end }}{{ if not (eq .DefValue "false" "" "[]") }} (Default: {{.DefValue}}){{ end }}
+
{{ if .Shorthand }}-{{.Shorthand}}, {{ end }} + --{{.Name}}{{ if .Varname }} <{{.Varname}}>{{ end }}{{.DefValue}}
{{.Usage}}
{{ end }}
` @@ -71,11 +95,12 @@ func printFlagsHTML(w io.Writer, fs *pflag.FlagSet) error { return } varname, usage := pflag.UnquoteUsage(f) + flags = append(flags, flagView{ Name: f.Name, Varname: varname, Shorthand: f.Shorthand, - DefValue: f.DefValue, + DefValue: getDefaultValueDisplayString(f), Usage: usage, }) })