more closely match cobra default val display

This commit is contained in:
Zack Sloane 2023-12-05 22:18:14 -05:00
parent fa7d651ef3
commit 92cb2cc78d
2 changed files with 29 additions and 12 deletions

View file

@ -150,15 +150,7 @@ func manPrintFlags(buf *bytes.Buffer, flags *pflag.FlagSet) {
buf.WriteString(fmt.Sprintf("`--%s`", flag.Name)) buf.WriteString(fmt.Sprintf("`--%s`", flag.Name))
} }
defval := "" defval := getDefaultValueDisplayString(flag)
hiddenDefs := map[string]bool{
"false": true,
"": true,
"[]": true,
}
if !hiddenDefs[flag.DefValue] {
defval = fmt.Sprintf(" (Default: %s)", flag.Value)
}
if varname == "" && defval != "" { if varname == "" && defval != "" {
buf.WriteString(fmt.Sprintf(" `%s`\n", strings.TrimSpace(defval))) buf.WriteString(fmt.Sprintf(" `%s`\n", strings.TrimSpace(defval)))

View file

@ -46,6 +46,30 @@ func hasNonHelpFlags(fs *pflag.FlagSet) (found bool) {
return 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 { type flagView struct {
Name string Name string
Varname string Varname string
@ -56,8 +80,8 @@ type flagView struct {
var flagsTemplate = ` var flagsTemplate = `
<dl class="flags">{{ range . }} <dl class="flags">{{ range . }}
<dt>{{ if .Shorthand }}<code>-{{.Shorthand}}</code>, {{ end -}} <dt>{{ if .Shorthand }}<code>-{{.Shorthand}}</code>, {{ end }}
<code>--{{.Name}}{{ if .Varname }} &lt;{{.Varname}}&gt;{{ end }}{{ if not (eq .DefValue "false" "" "[]") }} (Default: {{.DefValue}}){{ end }}</code></dt> <code>--{{.Name}}{{ if .Varname }} &lt;{{.Varname}}&gt;{{ end }}{{.DefValue}} </code></dt>
<dd>{{.Usage}}</dd> <dd>{{.Usage}}</dd>
{{ end }}</dl> {{ end }}</dl>
` `
@ -71,11 +95,12 @@ func printFlagsHTML(w io.Writer, fs *pflag.FlagSet) error {
return return
} }
varname, usage := pflag.UnquoteUsage(f) varname, usage := pflag.UnquoteUsage(f)
flags = append(flags, flagView{ flags = append(flags, flagView{
Name: f.Name, Name: f.Name,
Varname: varname, Varname: varname,
Shorthand: f.Shorthand, Shorthand: f.Shorthand,
DefValue: f.DefValue, DefValue: getDefaultValueDisplayString(f),
Usage: usage, Usage: usage,
}) })
}) })