duration.go (3317B)
1 package pflag 2 3 import ( 4 "time" 5 ) 6 7 // -- time.Duration Value 8 type durationValue time.Duration 9 10 func newDurationValue(val time.Duration, p *time.Duration) *durationValue { 11 *p = val 12 return (*durationValue)(p) 13 } 14 15 func (d *durationValue) Set(s string) error { 16 v, err := time.ParseDuration(s) 17 *d = durationValue(v) 18 return err 19 } 20 21 func (d *durationValue) Type() string { 22 return "duration" 23 } 24 25 func (d *durationValue) String() string { return (*time.Duration)(d).String() } 26 27 func durationConv(sval string) (interface{}, error) { 28 return time.ParseDuration(sval) 29 } 30 31 // GetDuration return the duration value of a flag with the given name 32 func (f *FlagSet) GetDuration(name string) (time.Duration, error) { 33 val, err := f.getFlagType(name, "duration", durationConv) 34 if err != nil { 35 return 0, err 36 } 37 return val.(time.Duration), nil 38 } 39 40 // DurationVar defines a time.Duration flag with specified name, default value, and usage string. 41 // The argument p points to a time.Duration variable in which to store the value of the flag. 42 func (f *FlagSet) DurationVar(p *time.Duration, name string, value time.Duration, usage string) { 43 f.VarP(newDurationValue(value, p), name, "", usage) 44 } 45 46 // DurationVarP is like DurationVar, but accepts a shorthand letter that can be used after a single dash. 47 func (f *FlagSet) DurationVarP(p *time.Duration, name, shorthand string, value time.Duration, usage string) { 48 f.VarP(newDurationValue(value, p), name, shorthand, usage) 49 } 50 51 // DurationVar defines a time.Duration flag with specified name, default value, and usage string. 52 // The argument p points to a time.Duration variable in which to store the value of the flag. 53 func DurationVar(p *time.Duration, name string, value time.Duration, usage string) { 54 CommandLine.VarP(newDurationValue(value, p), name, "", usage) 55 } 56 57 // DurationVarP is like DurationVar, but accepts a shorthand letter that can be used after a single dash. 58 func DurationVarP(p *time.Duration, name, shorthand string, value time.Duration, usage string) { 59 CommandLine.VarP(newDurationValue(value, p), name, shorthand, usage) 60 } 61 62 // Duration defines a time.Duration flag with specified name, default value, and usage string. 63 // The return value is the address of a time.Duration variable that stores the value of the flag. 64 func (f *FlagSet) Duration(name string, value time.Duration, usage string) *time.Duration { 65 p := new(time.Duration) 66 f.DurationVarP(p, name, "", value, usage) 67 return p 68 } 69 70 // DurationP is like Duration, but accepts a shorthand letter that can be used after a single dash. 71 func (f *FlagSet) DurationP(name, shorthand string, value time.Duration, usage string) *time.Duration { 72 p := new(time.Duration) 73 f.DurationVarP(p, name, shorthand, value, usage) 74 return p 75 } 76 77 // Duration defines a time.Duration flag with specified name, default value, and usage string. 78 // The return value is the address of a time.Duration variable that stores the value of the flag. 79 func Duration(name string, value time.Duration, usage string) *time.Duration { 80 return CommandLine.DurationP(name, "", value, usage) 81 } 82 83 // DurationP is like Duration, but accepts a shorthand letter that can be used after a single dash. 84 func DurationP(name, shorthand string, value time.Duration, usage string) *time.Duration { 85 return CommandLine.DurationP(name, shorthand, value, usage) 86 }