fix #1121(StringSliceFlag set default value into destination)
This commit is contained in:
parent
464c868816
commit
196b222a8b
@ -116,6 +116,14 @@ func (f *StringSliceFlag) GetValue() string {
|
|||||||
|
|
||||||
// Apply populates the flag given the flag set and environment
|
// Apply populates the flag given the flag set and environment
|
||||||
func (f *StringSliceFlag) Apply(set *flag.FlagSet) error {
|
func (f *StringSliceFlag) Apply(set *flag.FlagSet) error {
|
||||||
|
|
||||||
|
if f.Destination != nil {
|
||||||
|
if f.Value != nil {
|
||||||
|
f.Destination.slice = make([]string, len(f.Value.slice))
|
||||||
|
copy(f.Destination.slice, f.Value.slice)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if val, ok := flagFromEnvOrFile(f.EnvVars, f.FilePath); ok {
|
if val, ok := flagFromEnvOrFile(f.EnvVars, f.FilePath); ok {
|
||||||
f.Value = &StringSlice{}
|
f.Value = &StringSlice{}
|
||||||
destination := f.Value
|
destination := f.Value
|
||||||
|
12
flag_test.go
12
flag_test.go
@ -386,6 +386,18 @@ func TestStringSliceFlagApply_SetsAllNames(t *testing.T) {
|
|||||||
expect(t, err, nil)
|
expect(t, err, nil)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestStringSliceFlagApply_DefaultValueWithDestination(t *testing.T) {
|
||||||
|
defValue := []string{"UA", "US"}
|
||||||
|
|
||||||
|
fl := StringSliceFlag{Name: "country", Value: NewStringSlice(defValue...), Destination: NewStringSlice("CA")}
|
||||||
|
set := flag.NewFlagSet("test", 0)
|
||||||
|
_ = fl.Apply(set)
|
||||||
|
|
||||||
|
err := set.Parse([]string{})
|
||||||
|
expect(t, err, nil)
|
||||||
|
expect(t, defValue, fl.Destination.Value())
|
||||||
|
}
|
||||||
|
|
||||||
var intFlagTests = []struct {
|
var intFlagTests = []struct {
|
||||||
name string
|
name string
|
||||||
expected string
|
expected string
|
||||||
|
Loading…
Reference in New Issue
Block a user