diff --git a/docs.go b/docs.go index 0c352b0..3d72121 100644 --- a/docs.go +++ b/docs.go @@ -6,7 +6,6 @@ import ( "fmt" "io" "os" - "reflect" "regexp" "runtime" "sort" @@ -567,13 +566,8 @@ func (tabularTemplate) Prettify(s string) string { // getFlagDefaultValue returns the default text or default value of a flag. // cli.BoolFlag will always return an default. func getFlagDefaultValue(f cli.DocGenerationFlag) (value, text string) { - // GetDefaultText also returns GetValue so we have to use reflection - if ref := reflect.ValueOf(f); ref.Kind() == reflect.Ptr && ref.Elem().Kind() == reflect.Struct { - if val := ref.Elem().FieldByName("DefaultText"); val.IsValid() && val.Type().Kind() == reflect.String { - if defaultText := val.Interface().(string); defaultText != "" { - return "", defaultText - } - } + if defaultText := f.GetDefaultText(); defaultText != "" { + return "", defaultText } if !f.TakesValue() { @@ -583,5 +577,12 @@ func getFlagDefaultValue(f cli.DocGenerationFlag) (value, text string) { return "", "" } - return f.GetValue(), "" + if value := f.GetValue(); value != "" { + if _, ok := f.(*cli.StringFlag); ok { + return strings.Trim(value, "\""), "" + } else { + return value, "" + } + } + return "", "" } diff --git a/docs_test.go b/docs_test.go index e4e47d7..cdad29b 100644 --- a/docs_test.go +++ b/docs_test.go @@ -51,16 +51,16 @@ func buildFlagTest(t *testing.T) *cli.Command { &cli.StringMapFlag{Name: "string-map-set", Value: map[string]string{"a": "b"}}, &cli.StringSliceFlag{Name: "string-slice-empty"}, &cli.StringSliceFlag{Name: "string-slice-set", Value: []string{"a", "b"}}, - &cli.IntFlag{Name: "string-empty"}, - &cli.IntFlag{Name: "string-set", Value: 42}, - &cli.UintFlag{Name: "string-empty"}, - &cli.UintFlag{Name: "string-set", Value: 21}, - &cli.FloatFlag{Name: "string-empty"}, - &cli.FloatFlag{Name: "string-set", Value: 88.32}, - &cli.DurationFlag{Name: "string-empty"}, - &cli.DurationFlag{Name: "string-set", Value: 12 * time.Minute}, - &cli.TimestampFlag{Name: "string-empty"}, - &cli.TimestampFlag{Name: "string-set", Value: time.Unix(1729456800, 0).UTC()}, + &cli.IntFlag{Name: "int-empty"}, + &cli.IntFlag{Name: "int-set", Value: 42}, + &cli.UintFlag{Name: "uint-empty"}, + &cli.UintFlag{Name: "uint-set", Value: 21}, + &cli.FloatFlag{Name: "float-empty"}, + &cli.FloatFlag{Name: "float-set", Value: 88.32}, + &cli.DurationFlag{Name: "duration-empty"}, + &cli.DurationFlag{Name: "duration-set", Value: 12 * time.Minute}, + &cli.TimestampFlag{Name: "timestamp-empty"}, + &cli.TimestampFlag{Name: "timestamp-set", Value: time.Unix(1729456800, 0).UTC()}, }} } diff --git a/go.mod b/go.mod index 56f0087..0c2dc0d 100644 --- a/go.mod +++ b/go.mod @@ -4,8 +4,8 @@ go 1.24.4 require ( github.com/cpuguy83/go-md2man/v2 v2.0.2 - github.com/stretchr/testify v1.10.0 - github.com/urfave/cli/v3 v3.4.1 + github.com/stretchr/testify v1.11.1 + github.com/urfave/cli/v3 v3.5.0 ) require ( diff --git a/go.sum b/go.sum index c4bbf44..4a68359 100644 --- a/go.sum +++ b/go.sum @@ -6,10 +6,10 @@ github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZb github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= -github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= -github.com/urfave/cli/v3 v3.4.1 h1:1M9UOCy5bLmGnuu1yn3t3CB4rG79Rtoxuv1sPhnm6qM= -github.com/urfave/cli/v3 v3.4.1/go.mod h1:FJSKtM/9AiiTOJL4fJ6TbMUkxBXn7GO9guZqoZtpYpo= +github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= +github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= +github.com/urfave/cli/v3 v3.5.0 h1:qCuFMmdayTF3zmjG8TSsoBzrDqszNrklYg2x3g4MSgw= +github.com/urfave/cli/v3 v3.5.0/go.mod h1:ysVLtOEmg2tOy6PknnYVhDoouyC/6N42TMeoMzskhso= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= diff --git a/testdata/expected-doc-all-flag-types.md b/testdata/expected-doc-all-flag-types.md index 74d1078..e6e8142 100644 --- a/testdata/expected-doc-all-flag-types.md +++ b/testdata/expected-doc-all-flag-types.md @@ -9,22 +9,22 @@ main ``` [--bool-false] [--bool-true] -[--string-empty]=[value] -[--string-empty]=[value] -[--string-empty]=[value] -[--string-empty]=[value] -[--string-empty]=[value] +[--duration-empty]=[value] +[--duration-set]=[value] +[--float-empty]=[value] +[--float-set]=[value] +[--int-empty]=[value] +[--int-set]=[value] [--string-empty]=[value] [--string-map-empty]=[value] [--string-map-set]=[value] [--string-set]=[value] -[--string-set]=[value] -[--string-set]=[value] -[--string-set]=[value] -[--string-set]=[value] -[--string-set]=[value] [--string-slice-empty]=[value] [--string-slice-set]=[value] +[--timestamp-empty]=[value] +[--timestamp-set]=[value] +[--uint-empty]=[value] +[--uint-set]=[value] ``` **Usage**: @@ -39,35 +39,35 @@ main [GLOBAL OPTIONS] [command [COMMAND OPTIONS]] [ARGUMENTS...] **--bool-true**: (default: true) -**--string-empty**="": +**--duration-empty**="": (default: 0s) -**--string-empty**="": (default: 0) +**--duration-set**="": (default: 12m0s) -**--string-empty**="": (default: 0) +**--float-empty**="": (default: 0) -**--string-empty**="": (default: 0) +**--float-set**="": (default: 88.32) -**--string-empty**="": (default: 0001-01-01 00:00:00 +0000 UTC) +**--int-empty**="": (default: 0) -**--string-empty**="": (default: 0s) +**--int-set**="": (default: 42) -**--string-map-empty**="": (default: map[]) +**--string-empty**="": -**--string-map-set**="": (default: map[a:b]) +**--string-map-empty**="": -**--string-set**="": (default: 12m0s) +**--string-map-set**="": (default: a="b") -**--string-set**="": (default: 2024-10-20 20:40:00 +0000 UTC) +**--string-set**="": (default: a string) -**--string-set**="": (default: 21) +**--string-slice-empty**="": -**--string-set**="": (default: 42) +**--string-slice-set**="": (default: "a", "b") -**--string-set**="": (default: 88.32) +**--timestamp-empty**="": -**--string-set**="": (default: a string) +**--timestamp-set**="": (default: 2024-10-20 20:40:00 +0000 UTC) -**--string-slice-empty**="": (default: []) +**--uint-empty**="": (default: 0) -**--string-slice-set**="": (default: [a b]) +**--uint-set**="": (default: 21)