Added destination scan support for flags

This commit is contained in:
ston1th 2015-11-14 20:01:15 +01:00
parent 70e3fa51eb
commit bb7e45acf1

25
flag.go
View File

@ -240,6 +240,7 @@ type BoolFlag struct {
Name string Name string
Usage string Usage string
EnvVar string EnvVar string
Destination *bool
} }
// String returns a readable representation of this value (for usage defaults) // String returns a readable representation of this value (for usage defaults)
@ -264,6 +265,10 @@ func (f BoolFlag) Apply(set *flag.FlagSet) {
} }
eachName(f.Name, func(name string) { eachName(f.Name, func(name string) {
if f.Destination != nil {
set.BoolVar(f.Destination, name, val, f.Usage)
return
}
set.Bool(name, val, f.Usage) set.Bool(name, val, f.Usage)
}) })
} }
@ -316,6 +321,7 @@ type StringFlag struct {
Value string Value string
Usage string Usage string
EnvVar string EnvVar string
Destination *string
} }
// String returns the usage // String returns the usage
@ -345,6 +351,10 @@ func (f StringFlag) Apply(set *flag.FlagSet) {
} }
eachName(f.Name, func(name string) { eachName(f.Name, func(name string) {
if f.Destination != nil {
set.StringVar(f.Destination, name, f.Value, f.Usage)
return
}
set.String(name, f.Value, f.Usage) set.String(name, f.Value, f.Usage)
}) })
} }
@ -360,6 +370,7 @@ type IntFlag struct {
Value int Value int
Usage string Usage string
EnvVar string EnvVar string
Destination *int
} }
// String returns the usage // String returns the usage
@ -383,6 +394,10 @@ func (f IntFlag) Apply(set *flag.FlagSet) {
} }
eachName(f.Name, func(name string) { eachName(f.Name, func(name string) {
if f.Destination != nil {
set.IntVar(f.Destination, name, f.Value, f.Usage)
return
}
set.Int(name, f.Value, f.Usage) set.Int(name, f.Value, f.Usage)
}) })
} }
@ -398,6 +413,7 @@ type DurationFlag struct {
Value time.Duration Value time.Duration
Usage string Usage string
EnvVar string EnvVar string
Destination *time.Duration
} }
// String returns a readable representation of this value (for usage defaults) // String returns a readable representation of this value (for usage defaults)
@ -421,6 +437,10 @@ func (f DurationFlag) Apply(set *flag.FlagSet) {
} }
eachName(f.Name, func(name string) { eachName(f.Name, func(name string) {
if f.Destination != nil {
set.DurationVar(f.Destination, name, f.Value, f.Usage)
return
}
set.Duration(name, f.Value, f.Usage) set.Duration(name, f.Value, f.Usage)
}) })
} }
@ -436,6 +456,7 @@ type Float64Flag struct {
Value float64 Value float64
Usage string Usage string
EnvVar string EnvVar string
Destination *float64
} }
// String returns the usage // String returns the usage
@ -458,6 +479,10 @@ func (f Float64Flag) Apply(set *flag.FlagSet) {
} }
eachName(f.Name, func(name string) { eachName(f.Name, func(name string) {
if f.Destination != nil {
set.Float64Var(f.Destination, name, f.Value, f.Usage)
return
}
set.Float64(name, f.Value, f.Usage) set.Float64(name, f.Value, f.Usage)
}) })
} }