1package pflag 2 3import ( 4 "fmt" 5 "net" 6) 7 8// -- net.IP value 9type ipValue net.IP 10 11func newIPValue(val net.IP, p *net.IP) *ipValue { 12 *p = val 13 return (*ipValue)(p) 14} 15 16func (i *ipValue) String() string { return net.IP(*i).String() } 17func (i *ipValue) Set(s string) error { 18 ip := net.ParseIP(s) 19 if ip == nil { 20 return fmt.Errorf("failed to parse IP: %q", s) 21 } 22 *i = ipValue(ip) 23 return nil 24} 25 26func (i *ipValue) Type() string { 27 return "ip" 28} 29 30// IPVar defines an net.IP flag with specified name, default value, and usage string. 31// The argument p points to an net.IP variable in which to store the value of the flag. 32func (f *FlagSet) IPVar(p *net.IP, name string, value net.IP, usage string) { 33 f.VarP(newIPValue(value, p), name, "", usage) 34} 35 36// Like IPVar, but accepts a shorthand letter that can be used after a single dash. 37func (f *FlagSet) IPVarP(p *net.IP, name, shorthand string, value net.IP, usage string) { 38 f.VarP(newIPValue(value, p), name, shorthand, usage) 39} 40 41// IPVar defines an net.IP flag with specified name, default value, and usage string. 42// The argument p points to an net.IP variable in which to store the value of the flag. 43func IPVar(p *net.IP, name string, value net.IP, usage string) { 44 CommandLine.VarP(newIPValue(value, p), name, "", usage) 45} 46 47// Like IPVar, but accepts a shorthand letter that can be used after a single dash. 48func IPVarP(p *net.IP, name, shorthand string, value net.IP, usage string) { 49 CommandLine.VarP(newIPValue(value, p), name, shorthand, usage) 50} 51 52// IP defines an net.IP flag with specified name, default value, and usage string. 53// The return value is the address of an net.IP variable that stores the value of the flag. 54func (f *FlagSet) IP(name string, value net.IP, usage string) *net.IP { 55 p := new(net.IP) 56 f.IPVarP(p, name, "", value, usage) 57 return p 58} 59 60// Like IP, but accepts a shorthand letter that can be used after a single dash. 61func (f *FlagSet) IPP(name, shorthand string, value net.IP, usage string) *net.IP { 62 p := new(net.IP) 63 f.IPVarP(p, name, shorthand, value, usage) 64 return p 65} 66 67// IP defines an net.IP flag with specified name, default value, and usage string. 68// The return value is the address of an net.IP variable that stores the value of the flag. 69func IP(name string, value net.IP, usage string) *net.IP { 70 return CommandLine.IPP(name, "", value, usage) 71} 72 73// Like IP, but accepts a shorthand letter that can be used after a single dash. 74func IPP(name, shorthand string, value net.IP, usage string) *net.IP { 75 return CommandLine.IPP(name, shorthand, value, usage) 76} 77