Merge branch 'main' into issue_1505
This commit is contained in:
commit
86809cef4b
2
.github/workflows/cli.yml
vendored
2
.github/workflows/cli.yml
vendored
@ -40,6 +40,8 @@ jobs:
|
|||||||
GFLAGS: -tags urfave_cli_no_docs
|
GFLAGS: -tags urfave_cli_no_docs
|
||||||
- run: make check-binary-size
|
- run: make check-binary-size
|
||||||
- run: make yamlfmt
|
- run: make yamlfmt
|
||||||
|
- if: matrix.go == '1.19.x' && matrix.os == 'ubuntu-latest'
|
||||||
|
run: make generate
|
||||||
- run: make diffcheck
|
- run: make diffcheck
|
||||||
- if: matrix.go == '1.19.x' && matrix.os == 'ubuntu-latest'
|
- if: matrix.go == '1.19.x' && matrix.os == 'ubuntu-latest'
|
||||||
run: make v2diff
|
run: make v2diff
|
||||||
|
@ -62,6 +62,10 @@ func (f *GenericFlag) Apply(set *flag.FlagSet) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
for _, name := range f.Names() {
|
for _, name := range f.Names() {
|
||||||
|
if f.Destination != nil {
|
||||||
|
set.Var(f.Destination, name, f.Usage)
|
||||||
|
continue
|
||||||
|
}
|
||||||
set.Var(f.Value, name, f.Usage)
|
set.Var(f.Value, name, f.Usage)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
47
flag_test.go
47
flag_test.go
@ -2724,6 +2724,53 @@ func TestParseGeneric(t *testing.T) {
|
|||||||
}).Run([]string{"run", "-s", "10,20"})
|
}).Run([]string{"run", "-s", "10,20"})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type genericType struct {
|
||||||
|
s []string
|
||||||
|
}
|
||||||
|
|
||||||
|
func (g *genericType) Set(value string) error {
|
||||||
|
g.s = strings.Split(value, "-")
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (g *genericType) String() string {
|
||||||
|
return strings.Join(g.s, "-")
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestParseDestinationGeneric(t *testing.T) {
|
||||||
|
expectedString := "abc1-123d"
|
||||||
|
expectedGeneric := &genericType{[]string{"abc1", "123d"}}
|
||||||
|
dest := &genericType{}
|
||||||
|
|
||||||
|
_ = (&App{
|
||||||
|
Flags: []Flag{
|
||||||
|
&GenericFlag{
|
||||||
|
Name: "dest",
|
||||||
|
Destination: dest,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
Action: func(ctx *Context) error {
|
||||||
|
|
||||||
|
if !reflect.DeepEqual(dest, expectedGeneric) {
|
||||||
|
t.Errorf(
|
||||||
|
"expected destination generic: %+v, actual: %+v",
|
||||||
|
expectedGeneric,
|
||||||
|
dest,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
if dest.String() != expectedString {
|
||||||
|
t.Errorf(
|
||||||
|
"expected destination string: %s, actual: %s",
|
||||||
|
expectedString,
|
||||||
|
dest.String(),
|
||||||
|
)
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
},
|
||||||
|
}).Run([]string{"run", "--dest", expectedString})
|
||||||
|
}
|
||||||
|
|
||||||
func TestParseGenericFromEnv(t *testing.T) {
|
func TestParseGenericFromEnv(t *testing.T) {
|
||||||
defer resetEnv(os.Environ())
|
defer resetEnv(os.Environ())
|
||||||
os.Clearenv()
|
os.Clearenv()
|
||||||
|
@ -740,6 +740,14 @@ type DocGenerationFlag interface {
|
|||||||
DocGenerationFlag is an interface that allows documentation generation for
|
DocGenerationFlag is an interface that allows documentation generation for
|
||||||
the flag
|
the flag
|
||||||
|
|
||||||
|
type DocGenerationSliceFlag interface {
|
||||||
|
DocGenerationFlag
|
||||||
|
|
||||||
|
// IsSliceFlag returns true for flags that can be given multiple times.
|
||||||
|
IsSliceFlag() bool
|
||||||
|
}
|
||||||
|
DocGenerationSliceFlag extends DocGenerationFlag for slice-based flags.
|
||||||
|
|
||||||
type DurationFlag struct {
|
type DurationFlag struct {
|
||||||
Name string
|
Name string
|
||||||
|
|
||||||
@ -1058,6 +1066,9 @@ func (f *Float64SliceFlag) IsRequired() bool
|
|||||||
func (f *Float64SliceFlag) IsSet() bool
|
func (f *Float64SliceFlag) IsSet() bool
|
||||||
IsSet returns whether or not the flag has been set through env or file
|
IsSet returns whether or not the flag has been set through env or file
|
||||||
|
|
||||||
|
func (f *Float64SliceFlag) IsSliceFlag() bool
|
||||||
|
IsSliceFlag implements DocGenerationSliceFlag.
|
||||||
|
|
||||||
func (f *Float64SliceFlag) IsVisible() bool
|
func (f *Float64SliceFlag) IsVisible() bool
|
||||||
IsVisible returns true if the flag is not hidden, otherwise false
|
IsVisible returns true if the flag is not hidden, otherwise false
|
||||||
|
|
||||||
@ -1293,6 +1304,9 @@ func (f *Int64SliceFlag) IsRequired() bool
|
|||||||
func (f *Int64SliceFlag) IsSet() bool
|
func (f *Int64SliceFlag) IsSet() bool
|
||||||
IsSet returns whether or not the flag has been set through env or file
|
IsSet returns whether or not the flag has been set through env or file
|
||||||
|
|
||||||
|
func (f *Int64SliceFlag) IsSliceFlag() bool
|
||||||
|
IsSliceFlag implements DocGenerationSliceFlag.
|
||||||
|
|
||||||
func (f *Int64SliceFlag) IsVisible() bool
|
func (f *Int64SliceFlag) IsVisible() bool
|
||||||
IsVisible returns true if the flag is not hidden, otherwise false
|
IsVisible returns true if the flag is not hidden, otherwise false
|
||||||
|
|
||||||
@ -1458,6 +1472,9 @@ func (f *IntSliceFlag) IsRequired() bool
|
|||||||
func (f *IntSliceFlag) IsSet() bool
|
func (f *IntSliceFlag) IsSet() bool
|
||||||
IsSet returns whether or not the flag has been set through env or file
|
IsSet returns whether or not the flag has been set through env or file
|
||||||
|
|
||||||
|
func (f *IntSliceFlag) IsSliceFlag() bool
|
||||||
|
IsSliceFlag implements DocGenerationSliceFlag.
|
||||||
|
|
||||||
func (f *IntSliceFlag) IsVisible() bool
|
func (f *IntSliceFlag) IsVisible() bool
|
||||||
IsVisible returns true if the flag is not hidden, otherwise false
|
IsVisible returns true if the flag is not hidden, otherwise false
|
||||||
|
|
||||||
@ -1797,6 +1814,9 @@ func (f *StringSliceFlag) IsRequired() bool
|
|||||||
func (f *StringSliceFlag) IsSet() bool
|
func (f *StringSliceFlag) IsSet() bool
|
||||||
IsSet returns whether or not the flag has been set through env or file
|
IsSet returns whether or not the flag has been set through env or file
|
||||||
|
|
||||||
|
func (f *StringSliceFlag) IsSliceFlag() bool
|
||||||
|
IsSliceFlag implements DocGenerationSliceFlag.
|
||||||
|
|
||||||
func (f *StringSliceFlag) IsVisible() bool
|
func (f *StringSliceFlag) IsVisible() bool
|
||||||
IsVisible returns true if the flag is not hidden, otherwise false
|
IsVisible returns true if the flag is not hidden, otherwise false
|
||||||
|
|
||||||
@ -2058,6 +2078,9 @@ func (f *Uint64SliceFlag) IsRequired() bool
|
|||||||
func (f *Uint64SliceFlag) IsSet() bool
|
func (f *Uint64SliceFlag) IsSet() bool
|
||||||
IsSet returns whether or not the flag has been set through env or file
|
IsSet returns whether or not the flag has been set through env or file
|
||||||
|
|
||||||
|
func (f *Uint64SliceFlag) IsSliceFlag() bool
|
||||||
|
IsSliceFlag implements DocGenerationSliceFlag.
|
||||||
|
|
||||||
func (f *Uint64SliceFlag) IsVisible() bool
|
func (f *Uint64SliceFlag) IsVisible() bool
|
||||||
IsVisible returns true if the flag is not hidden, otherwise false
|
IsVisible returns true if the flag is not hidden, otherwise false
|
||||||
|
|
||||||
@ -2214,6 +2237,9 @@ func (f *UintSliceFlag) IsRequired() bool
|
|||||||
func (f *UintSliceFlag) IsSet() bool
|
func (f *UintSliceFlag) IsSet() bool
|
||||||
IsSet returns whether or not the flag has been set through env or file
|
IsSet returns whether or not the flag has been set through env or file
|
||||||
|
|
||||||
|
func (f *UintSliceFlag) IsSliceFlag() bool
|
||||||
|
IsSliceFlag implements DocGenerationSliceFlag.
|
||||||
|
|
||||||
func (f *UintSliceFlag) IsVisible() bool
|
func (f *UintSliceFlag) IsVisible() bool
|
||||||
IsVisible returns true if the flag is not hidden, otherwise false
|
IsVisible returns true if the flag is not hidden, otherwise false
|
||||||
|
|
||||||
|
26
testdata/godoc-v2.x.txt
vendored
26
testdata/godoc-v2.x.txt
vendored
@ -740,6 +740,14 @@ type DocGenerationFlag interface {
|
|||||||
DocGenerationFlag is an interface that allows documentation generation for
|
DocGenerationFlag is an interface that allows documentation generation for
|
||||||
the flag
|
the flag
|
||||||
|
|
||||||
|
type DocGenerationSliceFlag interface {
|
||||||
|
DocGenerationFlag
|
||||||
|
|
||||||
|
// IsSliceFlag returns true for flags that can be given multiple times.
|
||||||
|
IsSliceFlag() bool
|
||||||
|
}
|
||||||
|
DocGenerationSliceFlag extends DocGenerationFlag for slice-based flags.
|
||||||
|
|
||||||
type DurationFlag struct {
|
type DurationFlag struct {
|
||||||
Name string
|
Name string
|
||||||
|
|
||||||
@ -1058,6 +1066,9 @@ func (f *Float64SliceFlag) IsRequired() bool
|
|||||||
func (f *Float64SliceFlag) IsSet() bool
|
func (f *Float64SliceFlag) IsSet() bool
|
||||||
IsSet returns whether or not the flag has been set through env or file
|
IsSet returns whether or not the flag has been set through env or file
|
||||||
|
|
||||||
|
func (f *Float64SliceFlag) IsSliceFlag() bool
|
||||||
|
IsSliceFlag implements DocGenerationSliceFlag.
|
||||||
|
|
||||||
func (f *Float64SliceFlag) IsVisible() bool
|
func (f *Float64SliceFlag) IsVisible() bool
|
||||||
IsVisible returns true if the flag is not hidden, otherwise false
|
IsVisible returns true if the flag is not hidden, otherwise false
|
||||||
|
|
||||||
@ -1293,6 +1304,9 @@ func (f *Int64SliceFlag) IsRequired() bool
|
|||||||
func (f *Int64SliceFlag) IsSet() bool
|
func (f *Int64SliceFlag) IsSet() bool
|
||||||
IsSet returns whether or not the flag has been set through env or file
|
IsSet returns whether or not the flag has been set through env or file
|
||||||
|
|
||||||
|
func (f *Int64SliceFlag) IsSliceFlag() bool
|
||||||
|
IsSliceFlag implements DocGenerationSliceFlag.
|
||||||
|
|
||||||
func (f *Int64SliceFlag) IsVisible() bool
|
func (f *Int64SliceFlag) IsVisible() bool
|
||||||
IsVisible returns true if the flag is not hidden, otherwise false
|
IsVisible returns true if the flag is not hidden, otherwise false
|
||||||
|
|
||||||
@ -1458,6 +1472,9 @@ func (f *IntSliceFlag) IsRequired() bool
|
|||||||
func (f *IntSliceFlag) IsSet() bool
|
func (f *IntSliceFlag) IsSet() bool
|
||||||
IsSet returns whether or not the flag has been set through env or file
|
IsSet returns whether or not the flag has been set through env or file
|
||||||
|
|
||||||
|
func (f *IntSliceFlag) IsSliceFlag() bool
|
||||||
|
IsSliceFlag implements DocGenerationSliceFlag.
|
||||||
|
|
||||||
func (f *IntSliceFlag) IsVisible() bool
|
func (f *IntSliceFlag) IsVisible() bool
|
||||||
IsVisible returns true if the flag is not hidden, otherwise false
|
IsVisible returns true if the flag is not hidden, otherwise false
|
||||||
|
|
||||||
@ -1797,6 +1814,9 @@ func (f *StringSliceFlag) IsRequired() bool
|
|||||||
func (f *StringSliceFlag) IsSet() bool
|
func (f *StringSliceFlag) IsSet() bool
|
||||||
IsSet returns whether or not the flag has been set through env or file
|
IsSet returns whether or not the flag has been set through env or file
|
||||||
|
|
||||||
|
func (f *StringSliceFlag) IsSliceFlag() bool
|
||||||
|
IsSliceFlag implements DocGenerationSliceFlag.
|
||||||
|
|
||||||
func (f *StringSliceFlag) IsVisible() bool
|
func (f *StringSliceFlag) IsVisible() bool
|
||||||
IsVisible returns true if the flag is not hidden, otherwise false
|
IsVisible returns true if the flag is not hidden, otherwise false
|
||||||
|
|
||||||
@ -2058,6 +2078,9 @@ func (f *Uint64SliceFlag) IsRequired() bool
|
|||||||
func (f *Uint64SliceFlag) IsSet() bool
|
func (f *Uint64SliceFlag) IsSet() bool
|
||||||
IsSet returns whether or not the flag has been set through env or file
|
IsSet returns whether or not the flag has been set through env or file
|
||||||
|
|
||||||
|
func (f *Uint64SliceFlag) IsSliceFlag() bool
|
||||||
|
IsSliceFlag implements DocGenerationSliceFlag.
|
||||||
|
|
||||||
func (f *Uint64SliceFlag) IsVisible() bool
|
func (f *Uint64SliceFlag) IsVisible() bool
|
||||||
IsVisible returns true if the flag is not hidden, otherwise false
|
IsVisible returns true if the flag is not hidden, otherwise false
|
||||||
|
|
||||||
@ -2214,6 +2237,9 @@ func (f *UintSliceFlag) IsRequired() bool
|
|||||||
func (f *UintSliceFlag) IsSet() bool
|
func (f *UintSliceFlag) IsSet() bool
|
||||||
IsSet returns whether or not the flag has been set through env or file
|
IsSet returns whether or not the flag has been set through env or file
|
||||||
|
|
||||||
|
func (f *UintSliceFlag) IsSliceFlag() bool
|
||||||
|
IsSliceFlag implements DocGenerationSliceFlag.
|
||||||
|
|
||||||
func (f *UintSliceFlag) IsVisible() bool
|
func (f *UintSliceFlag) IsVisible() bool
|
||||||
IsVisible returns true if the flag is not hidden, otherwise false
|
IsVisible returns true if the flag is not hidden, otherwise false
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user