Use NewIntSlice and NewStringSlice internally
This commit is contained in:
parent
867aa0912d
commit
cb433e7468
@ -313,8 +313,8 @@ func TestApp_ParseSliceFlags(t *testing.T) {
|
|||||||
command := Command{
|
command := Command{
|
||||||
Name: "cmd",
|
Name: "cmd",
|
||||||
Flags: []Flag{
|
Flags: []Flag{
|
||||||
IntSliceFlag{Name: "p", Value: &IntSlice{}, Usage: "set one or more ip addr"},
|
IntSliceFlag{Name: "p", Value: NewIntSlice(), Usage: "set one or more ip addr"},
|
||||||
StringSliceFlag{Name: "ip", Value: &StringSlice{}, Usage: "set one or more ports to open"},
|
StringSliceFlag{Name: "ip", Value: NewStringSlice(), Usage: "set one or more ports to open"},
|
||||||
},
|
},
|
||||||
Action: func(c *Context) {
|
Action: func(c *Context) {
|
||||||
parsedIntSlice = c.IntSlice("p")
|
parsedIntSlice = c.IntSlice("p")
|
||||||
|
11
flag.go
11
flag.go
@ -165,7 +165,7 @@ func (f StringSliceFlag) Apply(set *flag.FlagSet) {
|
|||||||
for _, envVar := range strings.Split(f.EnvVar, ",") {
|
for _, envVar := range strings.Split(f.EnvVar, ",") {
|
||||||
envVar = strings.TrimSpace(envVar)
|
envVar = strings.TrimSpace(envVar)
|
||||||
if envVal := os.Getenv(envVar); envVal != "" {
|
if envVal := os.Getenv(envVar); envVal != "" {
|
||||||
newVal := &StringSlice{}
|
newVal := NewStringSlice()
|
||||||
for _, s := range strings.Split(envVal, ",") {
|
for _, s := range strings.Split(envVal, ",") {
|
||||||
s = strings.TrimSpace(s)
|
s = strings.TrimSpace(s)
|
||||||
newVal.Set(s)
|
newVal.Set(s)
|
||||||
@ -177,7 +177,7 @@ func (f StringSliceFlag) Apply(set *flag.FlagSet) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if f.Value == nil {
|
if f.Value == nil {
|
||||||
f.Value = &StringSlice{}
|
f.Value = NewStringSlice()
|
||||||
}
|
}
|
||||||
|
|
||||||
eachName(f.Name, func(name string) {
|
eachName(f.Name, func(name string) {
|
||||||
@ -272,10 +272,11 @@ func (f IntSliceFlag) Apply(set *flag.FlagSet) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if f.Value == nil {
|
||||||
|
f.Value = NewIntSlice()
|
||||||
|
}
|
||||||
|
|
||||||
eachName(f.Name, func(name string) {
|
eachName(f.Name, func(name string) {
|
||||||
if f.Value == nil {
|
|
||||||
f.Value = &IntSlice{}
|
|
||||||
}
|
|
||||||
set.Var(f.Value, name, f.Usage)
|
set.Var(f.Value, name, f.Usage)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
18
flag_test.go
18
flag_test.go
@ -188,9 +188,9 @@ var intSliceFlagTests = []struct {
|
|||||||
value *IntSlice
|
value *IntSlice
|
||||||
expected string
|
expected string
|
||||||
}{
|
}{
|
||||||
{"help", &IntSlice{}, "--help [--help option --help option]\t"},
|
{"help", NewIntSlice(), "--help [--help option --help option]\t"},
|
||||||
{"h", &IntSlice{}, "-h [-h option -h option]\t"},
|
{"h", NewIntSlice(), "-h [-h option -h option]\t"},
|
||||||
{"h", &IntSlice{}, "-h [-h option -h option]\t"},
|
{"h", NewIntSlice(), "-h [-h option -h option]\t"},
|
||||||
{"test", NewIntSlice(9), "--test [--test option --test option]\t"},
|
{"test", NewIntSlice(9), "--test [--test option --test option]\t"},
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -371,7 +371,7 @@ func TestParseMultiStringFromEnvCascade(t *testing.T) {
|
|||||||
func TestParseMultiStringSlice(t *testing.T) {
|
func TestParseMultiStringSlice(t *testing.T) {
|
||||||
(&App{
|
(&App{
|
||||||
Flags: []Flag{
|
Flags: []Flag{
|
||||||
StringSliceFlag{Name: "serve, s", Value: &StringSlice{}},
|
StringSliceFlag{Name: "serve, s", Value: NewStringSlice()},
|
||||||
},
|
},
|
||||||
Action: func(ctx *Context) {
|
Action: func(ctx *Context) {
|
||||||
if !reflect.DeepEqual(ctx.StringSlice("serve"), []string{"10", "20"}) {
|
if !reflect.DeepEqual(ctx.StringSlice("serve"), []string{"10", "20"}) {
|
||||||
@ -422,7 +422,7 @@ func TestParseMultiStringSliceFromEnv(t *testing.T) {
|
|||||||
|
|
||||||
(&App{
|
(&App{
|
||||||
Flags: []Flag{
|
Flags: []Flag{
|
||||||
StringSliceFlag{Name: "intervals, i", Value: &StringSlice{}, EnvVar: "APP_INTERVALS"},
|
StringSliceFlag{Name: "intervals, i", Value: NewStringSlice(), EnvVar: "APP_INTERVALS"},
|
||||||
},
|
},
|
||||||
Action: func(ctx *Context) {
|
Action: func(ctx *Context) {
|
||||||
if !reflect.DeepEqual(ctx.StringSlice("intervals"), []string{"20", "30", "40"}) {
|
if !reflect.DeepEqual(ctx.StringSlice("intervals"), []string{"20", "30", "40"}) {
|
||||||
@ -460,7 +460,7 @@ func TestParseMultiStringSliceFromEnvCascade(t *testing.T) {
|
|||||||
|
|
||||||
(&App{
|
(&App{
|
||||||
Flags: []Flag{
|
Flags: []Flag{
|
||||||
StringSliceFlag{Name: "intervals, i", Value: &StringSlice{}, EnvVar: "COMPAT_INTERVALS,APP_INTERVALS"},
|
StringSliceFlag{Name: "intervals, i", Value: NewStringSlice(), EnvVar: "COMPAT_INTERVALS,APP_INTERVALS"},
|
||||||
},
|
},
|
||||||
Action: func(ctx *Context) {
|
Action: func(ctx *Context) {
|
||||||
if !reflect.DeepEqual(ctx.StringSlice("intervals"), []string{"20", "30", "40"}) {
|
if !reflect.DeepEqual(ctx.StringSlice("intervals"), []string{"20", "30", "40"}) {
|
||||||
@ -568,7 +568,7 @@ func TestParseMultiIntFromEnvCascade(t *testing.T) {
|
|||||||
func TestParseMultiIntSlice(t *testing.T) {
|
func TestParseMultiIntSlice(t *testing.T) {
|
||||||
(&App{
|
(&App{
|
||||||
Flags: []Flag{
|
Flags: []Flag{
|
||||||
IntSliceFlag{Name: "serve, s", Value: &IntSlice{}},
|
IntSliceFlag{Name: "serve, s", Value: NewIntSlice()},
|
||||||
},
|
},
|
||||||
Action: func(ctx *Context) {
|
Action: func(ctx *Context) {
|
||||||
if !reflect.DeepEqual(ctx.IntSlice("serve"), []int{10, 20}) {
|
if !reflect.DeepEqual(ctx.IntSlice("serve"), []int{10, 20}) {
|
||||||
@ -619,7 +619,7 @@ func TestParseMultiIntSliceFromEnv(t *testing.T) {
|
|||||||
|
|
||||||
(&App{
|
(&App{
|
||||||
Flags: []Flag{
|
Flags: []Flag{
|
||||||
IntSliceFlag{Name: "intervals, i", Value: &IntSlice{}, EnvVar: "APP_INTERVALS"},
|
IntSliceFlag{Name: "intervals, i", Value: NewIntSlice(), EnvVar: "APP_INTERVALS"},
|
||||||
},
|
},
|
||||||
Action: func(ctx *Context) {
|
Action: func(ctx *Context) {
|
||||||
if !reflect.DeepEqual(ctx.IntSlice("intervals"), []int{20, 30, 40}) {
|
if !reflect.DeepEqual(ctx.IntSlice("intervals"), []int{20, 30, 40}) {
|
||||||
@ -657,7 +657,7 @@ func TestParseMultiIntSliceFromEnvCascade(t *testing.T) {
|
|||||||
|
|
||||||
(&App{
|
(&App{
|
||||||
Flags: []Flag{
|
Flags: []Flag{
|
||||||
IntSliceFlag{Name: "intervals, i", Value: &IntSlice{}, EnvVar: "COMPAT_INTERVALS,APP_INTERVALS"},
|
IntSliceFlag{Name: "intervals, i", Value: NewIntSlice(), EnvVar: "COMPAT_INTERVALS,APP_INTERVALS"},
|
||||||
},
|
},
|
||||||
Action: func(ctx *Context) {
|
Action: func(ctx *Context) {
|
||||||
if !reflect.DeepEqual(ctx.IntSlice("intervals"), []int{20, 30, 40}) {
|
if !reflect.DeepEqual(ctx.IntSlice("intervals"), []int{20, 30, 40}) {
|
||||||
|
Loading…
Reference in New Issue
Block a user