Path: blob/main/vendor/github.com/spf13/pflag/ipnet.go
2875 views
package pflag12import (3"fmt"4"net"5"strings"6)78// IPNet adapts net.IPNet for use as a flag.9type ipNetValue net.IPNet1011func (ipnet ipNetValue) String() string {12n := net.IPNet(ipnet)13return n.String()14}1516func (ipnet *ipNetValue) Set(value string) error {17_, n, err := net.ParseCIDR(strings.TrimSpace(value))18if err != nil {19return err20}21*ipnet = ipNetValue(*n)22return nil23}2425func (*ipNetValue) Type() string {26return "ipNet"27}2829func newIPNetValue(val net.IPNet, p *net.IPNet) *ipNetValue {30*p = val31return (*ipNetValue)(p)32}3334func ipNetConv(sval string) (interface{}, error) {35_, n, err := net.ParseCIDR(strings.TrimSpace(sval))36if err == nil {37return *n, nil38}39return nil, fmt.Errorf("invalid string being converted to IPNet: %s", sval)40}4142// GetIPNet return the net.IPNet value of a flag with the given name43func (f *FlagSet) GetIPNet(name string) (net.IPNet, error) {44val, err := f.getFlagType(name, "ipNet", ipNetConv)45if err != nil {46return net.IPNet{}, err47}48return val.(net.IPNet), nil49}5051// IPNetVar defines an net.IPNet flag with specified name, default value, and usage string.52// The argument p points to an net.IPNet variable in which to store the value of the flag.53func (f *FlagSet) IPNetVar(p *net.IPNet, name string, value net.IPNet, usage string) {54f.VarP(newIPNetValue(value, p), name, "", usage)55}5657// IPNetVarP is like IPNetVar, but accepts a shorthand letter that can be used after a single dash.58func (f *FlagSet) IPNetVarP(p *net.IPNet, name, shorthand string, value net.IPNet, usage string) {59f.VarP(newIPNetValue(value, p), name, shorthand, usage)60}6162// IPNetVar defines an net.IPNet flag with specified name, default value, and usage string.63// The argument p points to an net.IPNet variable in which to store the value of the flag.64func IPNetVar(p *net.IPNet, name string, value net.IPNet, usage string) {65CommandLine.VarP(newIPNetValue(value, p), name, "", usage)66}6768// IPNetVarP is like IPNetVar, but accepts a shorthand letter that can be used after a single dash.69func IPNetVarP(p *net.IPNet, name, shorthand string, value net.IPNet, usage string) {70CommandLine.VarP(newIPNetValue(value, p), name, shorthand, usage)71}7273// IPNet defines an net.IPNet flag with specified name, default value, and usage string.74// The return value is the address of an net.IPNet variable that stores the value of the flag.75func (f *FlagSet) IPNet(name string, value net.IPNet, usage string) *net.IPNet {76p := new(net.IPNet)77f.IPNetVarP(p, name, "", value, usage)78return p79}8081// IPNetP is like IPNet, but accepts a shorthand letter that can be used after a single dash.82func (f *FlagSet) IPNetP(name, shorthand string, value net.IPNet, usage string) *net.IPNet {83p := new(net.IPNet)84f.IPNetVarP(p, name, shorthand, value, usage)85return p86}8788// IPNet defines an net.IPNet flag with specified name, default value, and usage string.89// The return value is the address of an net.IPNet variable that stores the value of the flag.90func IPNet(name string, value net.IPNet, usage string) *net.IPNet {91return CommandLine.IPNetP(name, "", value, usage)92}9394// IPNetP is like IPNet, but accepts a shorthand letter that can be used after a single dash.95func IPNetP(name, shorthand string, value net.IPNet, usage string) *net.IPNet {96return CommandLine.IPNetP(name, shorthand, value, usage)97}9899100