godep update github.com/spf13/pflag
This commit is contained in:
		
							
								
								
									
										2
									
								
								Godeps/Godeps.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										2
									
								
								Godeps/Godeps.json
									
									
									
										generated
									
									
									
								
							| @@ -2227,7 +2227,7 @@ | |||||||
| 		}, | 		}, | ||||||
| 		{ | 		{ | ||||||
| 			"ImportPath": "github.com/spf13/pflag", | 			"ImportPath": "github.com/spf13/pflag", | ||||||
| 			"Rev": "5ccb023bc27df288a957c5e994cd44fd19619465" | 			"Rev": "9ff6c6923cfffbcd502984b8e0c80539a94968b7" | ||||||
| 		}, | 		}, | ||||||
| 		{ | 		{ | ||||||
| 			"ImportPath": "github.com/spf13/viper", | 			"ImportPath": "github.com/spf13/viper", | ||||||
|   | |||||||
| @@ -106,7 +106,7 @@ | |||||||
| 		}, | 		}, | ||||||
| 		{ | 		{ | ||||||
| 			"ImportPath": "github.com/spf13/pflag", | 			"ImportPath": "github.com/spf13/pflag", | ||||||
| 			"Rev": "5ccb023bc27df288a957c5e994cd44fd19619465" | 			"Rev": "9ff6c6923cfffbcd502984b8e0c80539a94968b7" | ||||||
| 		}, | 		}, | ||||||
| 		{ | 		{ | ||||||
| 			"ImportPath": "github.com/ugorji/go/codec", | 			"ImportPath": "github.com/ugorji/go/codec", | ||||||
|   | |||||||
							
								
								
									
										2
									
								
								staging/src/k8s.io/apiserver/Godeps/Godeps.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										2
									
								
								staging/src/k8s.io/apiserver/Godeps/Godeps.json
									
									
									
										generated
									
									
									
								
							| @@ -551,7 +551,7 @@ | |||||||
| 		}, | 		}, | ||||||
| 		{ | 		{ | ||||||
| 			"ImportPath": "github.com/spf13/pflag", | 			"ImportPath": "github.com/spf13/pflag", | ||||||
| 			"Rev": "5ccb023bc27df288a957c5e994cd44fd19619465" | 			"Rev": "9ff6c6923cfffbcd502984b8e0c80539a94968b7" | ||||||
| 		}, | 		}, | ||||||
| 		{ | 		{ | ||||||
| 			"ImportPath": "github.com/stretchr/testify/assert", | 			"ImportPath": "github.com/stretchr/testify/assert", | ||||||
|   | |||||||
							
								
								
									
										2
									
								
								staging/src/k8s.io/client-go/Godeps/Godeps.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										2
									
								
								staging/src/k8s.io/client-go/Godeps/Godeps.json
									
									
									
										generated
									
									
									
								
							| @@ -170,7 +170,7 @@ | |||||||
| 		}, | 		}, | ||||||
| 		{ | 		{ | ||||||
| 			"ImportPath": "github.com/spf13/pflag", | 			"ImportPath": "github.com/spf13/pflag", | ||||||
| 			"Rev": "5ccb023bc27df288a957c5e994cd44fd19619465" | 			"Rev": "9ff6c6923cfffbcd502984b8e0c80539a94968b7" | ||||||
| 		}, | 		}, | ||||||
| 		{ | 		{ | ||||||
| 			"ImportPath": "github.com/stretchr/testify/assert", | 			"ImportPath": "github.com/stretchr/testify/assert", | ||||||
|   | |||||||
| @@ -278,7 +278,7 @@ | |||||||
| 		}, | 		}, | ||||||
| 		{ | 		{ | ||||||
| 			"ImportPath": "github.com/spf13/pflag", | 			"ImportPath": "github.com/spf13/pflag", | ||||||
| 			"Rev": "5ccb023bc27df288a957c5e994cd44fd19619465" | 			"Rev": "9ff6c6923cfffbcd502984b8e0c80539a94968b7" | ||||||
| 		}, | 		}, | ||||||
| 		{ | 		{ | ||||||
| 			"ImportPath": "github.com/ugorji/go/codec", | 			"ImportPath": "github.com/ugorji/go/codec", | ||||||
|   | |||||||
| @@ -266,7 +266,7 @@ | |||||||
| 		}, | 		}, | ||||||
| 		{ | 		{ | ||||||
| 			"ImportPath": "github.com/spf13/pflag", | 			"ImportPath": "github.com/spf13/pflag", | ||||||
| 			"Rev": "5ccb023bc27df288a957c5e994cd44fd19619465" | 			"Rev": "9ff6c6923cfffbcd502984b8e0c80539a94968b7" | ||||||
| 		}, | 		}, | ||||||
| 		{ | 		{ | ||||||
| 			"ImportPath": "github.com/ugorji/go/codec", | 			"ImportPath": "github.com/ugorji/go/codec", | ||||||
|   | |||||||
							
								
								
									
										3
									
								
								vendor/BUILD
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								vendor/BUILD
									
									
									
									
										vendored
									
									
								
							| @@ -6483,6 +6483,7 @@ go_library( | |||||||
|     name = "github.com/spf13/pflag", |     name = "github.com/spf13/pflag", | ||||||
|     srcs = [ |     srcs = [ | ||||||
|         "github.com/spf13/pflag/bool.go", |         "github.com/spf13/pflag/bool.go", | ||||||
|  |         "github.com/spf13/pflag/bool_slice.go", | ||||||
|         "github.com/spf13/pflag/count.go", |         "github.com/spf13/pflag/count.go", | ||||||
|         "github.com/spf13/pflag/duration.go", |         "github.com/spf13/pflag/duration.go", | ||||||
|         "github.com/spf13/pflag/flag.go", |         "github.com/spf13/pflag/flag.go", | ||||||
| @@ -6495,6 +6496,7 @@ go_library( | |||||||
|         "github.com/spf13/pflag/int8.go", |         "github.com/spf13/pflag/int8.go", | ||||||
|         "github.com/spf13/pflag/int_slice.go", |         "github.com/spf13/pflag/int_slice.go", | ||||||
|         "github.com/spf13/pflag/ip.go", |         "github.com/spf13/pflag/ip.go", | ||||||
|  |         "github.com/spf13/pflag/ip_slice.go", | ||||||
|         "github.com/spf13/pflag/ipmask.go", |         "github.com/spf13/pflag/ipmask.go", | ||||||
|         "github.com/spf13/pflag/ipnet.go", |         "github.com/spf13/pflag/ipnet.go", | ||||||
|         "github.com/spf13/pflag/string.go", |         "github.com/spf13/pflag/string.go", | ||||||
| @@ -6505,6 +6507,7 @@ go_library( | |||||||
|         "github.com/spf13/pflag/uint32.go", |         "github.com/spf13/pflag/uint32.go", | ||||||
|         "github.com/spf13/pflag/uint64.go", |         "github.com/spf13/pflag/uint64.go", | ||||||
|         "github.com/spf13/pflag/uint8.go", |         "github.com/spf13/pflag/uint8.go", | ||||||
|  |         "github.com/spf13/pflag/uint_slice.go", | ||||||
|     ], |     ], | ||||||
|     tags = ["automanaged"], |     tags = ["automanaged"], | ||||||
| ) | ) | ||||||
|   | |||||||
							
								
								
									
										2
									
								
								vendor/github.com/spf13/pflag/.gitignore
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								vendor/github.com/spf13/pflag/.gitignore
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,2 @@ | |||||||
|  | .idea/* | ||||||
|  |  | ||||||
							
								
								
									
										6
									
								
								vendor/github.com/spf13/pflag/README.md
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										6
									
								
								vendor/github.com/spf13/pflag/README.md
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,4 +1,6 @@ | |||||||
| [](https://travis-ci.org/spf13/pflag) | [](https://travis-ci.org/spf13/pflag) | ||||||
|  | [](https://goreportcard.com/report/github.com/spf13/pflag) | ||||||
|  | [](https://godoc.org/github.com/spf13/pflag) | ||||||
|  |  | ||||||
| ## Description | ## Description | ||||||
|  |  | ||||||
| @@ -106,9 +108,9 @@ that give one-letter shorthands for flags. You can use these by appending | |||||||
| var ip = flag.IntP("flagname", "f", 1234, "help message") | var ip = flag.IntP("flagname", "f", 1234, "help message") | ||||||
| var flagvar bool | var flagvar bool | ||||||
| func init() { | func init() { | ||||||
|     flag.BoolVarP("boolname", "b", true, "help message") | 	flag.BoolVarP(&flagvar, "boolname", "b", true, "help message") | ||||||
| } | } | ||||||
| flag.VarP(&flagVar, "varname", "v", 1234, "help message") | flag.VarP(&flagVal, "varname", "v", "help message") | ||||||
| ``` | ``` | ||||||
|  |  | ||||||
| Shorthand letters can be used with single dashes on the command line. | Shorthand letters can be used with single dashes on the command line. | ||||||
|   | |||||||
							
								
								
									
										147
									
								
								vendor/github.com/spf13/pflag/bool_slice.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										147
									
								
								vendor/github.com/spf13/pflag/bool_slice.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,147 @@ | |||||||
|  | package pflag | ||||||
|  |  | ||||||
|  | import ( | ||||||
|  | 	"io" | ||||||
|  | 	"strconv" | ||||||
|  | 	"strings" | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | // -- boolSlice Value | ||||||
|  | type boolSliceValue struct { | ||||||
|  | 	value   *[]bool | ||||||
|  | 	changed bool | ||||||
|  | } | ||||||
|  |  | ||||||
|  | func newBoolSliceValue(val []bool, p *[]bool) *boolSliceValue { | ||||||
|  | 	bsv := new(boolSliceValue) | ||||||
|  | 	bsv.value = p | ||||||
|  | 	*bsv.value = val | ||||||
|  | 	return bsv | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // Set converts, and assigns, the comma-separated boolean argument string representation as the []bool value of this flag. | ||||||
|  | // If Set is called on a flag that already has a []bool assigned, the newly converted values will be appended. | ||||||
|  | func (s *boolSliceValue) Set(val string) error { | ||||||
|  |  | ||||||
|  | 	// remove all quote characters | ||||||
|  | 	rmQuote := strings.NewReplacer(`"`, "", `'`, "", "`", "") | ||||||
|  |  | ||||||
|  | 	// read flag arguments with CSV parser | ||||||
|  | 	boolStrSlice, err := readAsCSV(rmQuote.Replace(val)) | ||||||
|  | 	if err != nil && err != io.EOF { | ||||||
|  | 		return err | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	// parse boolean values into slice | ||||||
|  | 	out := make([]bool, 0, len(boolStrSlice)) | ||||||
|  | 	for _, boolStr := range boolStrSlice { | ||||||
|  | 		b, err := strconv.ParseBool(strings.TrimSpace(boolStr)) | ||||||
|  | 		if err != nil { | ||||||
|  | 			return err | ||||||
|  | 		} | ||||||
|  | 		out = append(out, b) | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	if !s.changed { | ||||||
|  | 		*s.value = out | ||||||
|  | 	} else { | ||||||
|  | 		*s.value = append(*s.value, out...) | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	s.changed = true | ||||||
|  |  | ||||||
|  | 	return nil | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // Type returns a string that uniquely represents this flag's type. | ||||||
|  | func (s *boolSliceValue) Type() string { | ||||||
|  | 	return "boolSlice" | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // String defines a "native" format for this boolean slice flag value. | ||||||
|  | func (s *boolSliceValue) String() string { | ||||||
|  |  | ||||||
|  | 	boolStrSlice := make([]string, len(*s.value)) | ||||||
|  | 	for i, b := range *s.value { | ||||||
|  | 		boolStrSlice[i] = strconv.FormatBool(b) | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	out, _ := writeAsCSV(boolStrSlice) | ||||||
|  |  | ||||||
|  | 	return "[" + out + "]" | ||||||
|  | } | ||||||
|  |  | ||||||
|  | func boolSliceConv(val string) (interface{}, error) { | ||||||
|  | 	val = strings.Trim(val, "[]") | ||||||
|  | 	// Empty string would cause a slice with one (empty) entry | ||||||
|  | 	if len(val) == 0 { | ||||||
|  | 		return []bool{}, nil | ||||||
|  | 	} | ||||||
|  | 	ss := strings.Split(val, ",") | ||||||
|  | 	out := make([]bool, len(ss)) | ||||||
|  | 	for i, t := range ss { | ||||||
|  | 		var err error | ||||||
|  | 		out[i], err = strconv.ParseBool(t) | ||||||
|  | 		if err != nil { | ||||||
|  | 			return nil, err | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | 	return out, nil | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // GetBoolSlice returns the []bool value of a flag with the given name. | ||||||
|  | func (f *FlagSet) GetBoolSlice(name string) ([]bool, error) { | ||||||
|  | 	val, err := f.getFlagType(name, "boolSlice", boolSliceConv) | ||||||
|  | 	if err != nil { | ||||||
|  | 		return []bool{}, err | ||||||
|  | 	} | ||||||
|  | 	return val.([]bool), nil | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // BoolSliceVar defines a boolSlice flag with specified name, default value, and usage string. | ||||||
|  | // The argument p points to a []bool variable in which to store the value of the flag. | ||||||
|  | func (f *FlagSet) BoolSliceVar(p *[]bool, name string, value []bool, usage string) { | ||||||
|  | 	f.VarP(newBoolSliceValue(value, p), name, "", usage) | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // BoolSliceVarP is like BoolSliceVar, but accepts a shorthand letter that can be used after a single dash. | ||||||
|  | func (f *FlagSet) BoolSliceVarP(p *[]bool, name, shorthand string, value []bool, usage string) { | ||||||
|  | 	f.VarP(newBoolSliceValue(value, p), name, shorthand, usage) | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // BoolSliceVar defines a []bool flag with specified name, default value, and usage string. | ||||||
|  | // The argument p points to a []bool variable in which to store the value of the flag. | ||||||
|  | func BoolSliceVar(p *[]bool, name string, value []bool, usage string) { | ||||||
|  | 	CommandLine.VarP(newBoolSliceValue(value, p), name, "", usage) | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // BoolSliceVarP is like BoolSliceVar, but accepts a shorthand letter that can be used after a single dash. | ||||||
|  | func BoolSliceVarP(p *[]bool, name, shorthand string, value []bool, usage string) { | ||||||
|  | 	CommandLine.VarP(newBoolSliceValue(value, p), name, shorthand, usage) | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // BoolSlice defines a []bool flag with specified name, default value, and usage string. | ||||||
|  | // The return value is the address of a []bool variable that stores the value of the flag. | ||||||
|  | func (f *FlagSet) BoolSlice(name string, value []bool, usage string) *[]bool { | ||||||
|  | 	p := []bool{} | ||||||
|  | 	f.BoolSliceVarP(&p, name, "", value, usage) | ||||||
|  | 	return &p | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // BoolSliceP is like BoolSlice, but accepts a shorthand letter that can be used after a single dash. | ||||||
|  | func (f *FlagSet) BoolSliceP(name, shorthand string, value []bool, usage string) *[]bool { | ||||||
|  | 	p := []bool{} | ||||||
|  | 	f.BoolSliceVarP(&p, name, shorthand, value, usage) | ||||||
|  | 	return &p | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // BoolSlice defines a []bool flag with specified name, default value, and usage string. | ||||||
|  | // The return value is the address of a []bool variable that stores the value of the flag. | ||||||
|  | func BoolSlice(name string, value []bool, usage string) *[]bool { | ||||||
|  | 	return CommandLine.BoolSliceP(name, "", value, usage) | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // BoolSliceP is like BoolSlice, but accepts a shorthand letter that can be used after a single dash. | ||||||
|  | func BoolSliceP(name, shorthand string, value []bool, usage string) *[]bool { | ||||||
|  | 	return CommandLine.BoolSliceP(name, shorthand, value, usage) | ||||||
|  | } | ||||||
							
								
								
									
										146
									
								
								vendor/github.com/spf13/pflag/flag.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										146
									
								
								vendor/github.com/spf13/pflag/flag.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -487,9 +487,76 @@ func UnquoteUsage(flag *Flag) (name string, usage string) { | |||||||
| 	return | 	return | ||||||
| } | } | ||||||
|  |  | ||||||
| // FlagUsages Returns a string containing the usage information for all flags in | // Splits the string `s` on whitespace into an initial substring up to | ||||||
| // the FlagSet | // `i` runes in length and the remainder. Will go `slop` over `i` if | ||||||
| func (f *FlagSet) FlagUsages() string { | // that encompasses the entire string (which allows the caller to | ||||||
|  | // avoid short orphan words on the final line). | ||||||
|  | func wrapN(i, slop int, s string) (string, string) { | ||||||
|  | 	if i+slop > len(s) { | ||||||
|  | 		return s, "" | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	w := strings.LastIndexAny(s[:i], " \t") | ||||||
|  | 	if w <= 0 { | ||||||
|  | 		return s, "" | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	return s[:w], s[w+1:] | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // Wraps the string `s` to a maximum width `w` with leading indent | ||||||
|  | // `i`. The first line is not indented (this is assumed to be done by | ||||||
|  | // caller). Pass `w` == 0 to do no wrapping | ||||||
|  | func wrap(i, w int, s string) string { | ||||||
|  | 	if w == 0 { | ||||||
|  | 		return s | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	// space between indent i and end of line width w into which | ||||||
|  | 	// we should wrap the text. | ||||||
|  | 	wrap := w - i | ||||||
|  |  | ||||||
|  | 	var r, l string | ||||||
|  |  | ||||||
|  | 	// Not enough space for sensible wrapping. Wrap as a block on | ||||||
|  | 	// the next line instead. | ||||||
|  | 	if wrap < 24 { | ||||||
|  | 		i = 16 | ||||||
|  | 		wrap = w - i | ||||||
|  | 		r += "\n" + strings.Repeat(" ", i) | ||||||
|  | 	} | ||||||
|  | 	// If still not enough space then don't even try to wrap. | ||||||
|  | 	if wrap < 24 { | ||||||
|  | 		return s | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	// Try to avoid short orphan words on the final line, by | ||||||
|  | 	// allowing wrapN to go a bit over if that would fit in the | ||||||
|  | 	// remainder of the line. | ||||||
|  | 	slop := 5 | ||||||
|  | 	wrap = wrap - slop | ||||||
|  |  | ||||||
|  | 	// Handle first line, which is indented by the caller (or the | ||||||
|  | 	// special case above) | ||||||
|  | 	l, s = wrapN(wrap, slop, s) | ||||||
|  | 	r = r + l | ||||||
|  |  | ||||||
|  | 	// Now wrap the rest | ||||||
|  | 	for s != "" { | ||||||
|  | 		var t string | ||||||
|  |  | ||||||
|  | 		t, s = wrapN(wrap, slop, s) | ||||||
|  | 		r = r + "\n" + strings.Repeat(" ", i) + t | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	return r | ||||||
|  |  | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // FlagUsagesWrapped returns a string containing the usage information | ||||||
|  | // for all flags in the FlagSet. Wrapped to `cols` columns (0 for no | ||||||
|  | // wrapping) | ||||||
|  | func (f *FlagSet) FlagUsagesWrapped(cols int) string { | ||||||
| 	x := new(bytes.Buffer) | 	x := new(bytes.Buffer) | ||||||
|  |  | ||||||
| 	lines := make([]string, 0, len(f.formal)) | 	lines := make([]string, 0, len(f.formal)) | ||||||
| @@ -546,12 +613,19 @@ func (f *FlagSet) FlagUsages() string { | |||||||
| 	for _, line := range lines { | 	for _, line := range lines { | ||||||
| 		sidx := strings.Index(line, "\x00") | 		sidx := strings.Index(line, "\x00") | ||||||
| 		spacing := strings.Repeat(" ", maxlen-sidx) | 		spacing := strings.Repeat(" ", maxlen-sidx) | ||||||
| 		fmt.Fprintln(x, line[:sidx], spacing, line[sidx+1:]) | 		// maxlen + 2 comes from + 1 for the \x00 and + 1 for the (deliberate) off-by-one in maxlen-sidx | ||||||
|  | 		fmt.Fprintln(x, line[:sidx], spacing, wrap(maxlen+2, cols, line[sidx+1:])) | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	return x.String() | 	return x.String() | ||||||
| } | } | ||||||
|  |  | ||||||
|  | // FlagUsages returns a string containing the usage information for all flags in | ||||||
|  | // the FlagSet | ||||||
|  | func (f *FlagSet) FlagUsages() string { | ||||||
|  | 	return f.FlagUsagesWrapped(0) | ||||||
|  | } | ||||||
|  |  | ||||||
| // PrintDefaults prints to standard error the default values of all defined command-line flags. | // PrintDefaults prints to standard error the default values of all defined command-line flags. | ||||||
| func PrintDefaults() { | func PrintDefaults() { | ||||||
| 	CommandLine.PrintDefaults() | 	CommandLine.PrintDefaults() | ||||||
| @@ -635,7 +709,7 @@ func (f *FlagSet) VarPF(value Value, name, shorthand, usage string) *Flag { | |||||||
|  |  | ||||||
| // VarP is like Var, but accepts a shorthand letter that can be used after a single dash. | // VarP is like Var, but accepts a shorthand letter that can be used after a single dash. | ||||||
| func (f *FlagSet) VarP(value Value, name, shorthand, usage string) { | func (f *FlagSet) VarP(value Value, name, shorthand, usage string) { | ||||||
| 	_ = f.VarPF(value, name, shorthand, usage) | 	f.VarPF(value, name, shorthand, usage) | ||||||
| } | } | ||||||
|  |  | ||||||
| // AddFlag will add the flag to the FlagSet | // AddFlag will add the flag to the FlagSet | ||||||
| @@ -752,7 +826,7 @@ func containsShorthand(arg, shorthand string) bool { | |||||||
| 	return strings.Contains(arg, shorthand) | 	return strings.Contains(arg, shorthand) | ||||||
| } | } | ||||||
|  |  | ||||||
| func (f *FlagSet) parseLongArg(s string, args []string) (a []string, err error) { | func (f *FlagSet) parseLongArg(s string, args []string, fn parseFunc) (a []string, err error) { | ||||||
| 	a = args | 	a = args | ||||||
| 	name := s[2:] | 	name := s[2:] | ||||||
| 	if len(name) == 0 || name[0] == '-' || name[0] == '=' { | 	if len(name) == 0 || name[0] == '-' || name[0] == '=' { | ||||||
| @@ -786,11 +860,11 @@ func (f *FlagSet) parseLongArg(s string, args []string) (a []string, err error) | |||||||
| 		err = f.failf("flag needs an argument: %s", s) | 		err = f.failf("flag needs an argument: %s", s) | ||||||
| 		return | 		return | ||||||
| 	} | 	} | ||||||
| 	err = f.setFlag(flag, value, s) | 	err = fn(flag, value, s) | ||||||
| 	return | 	return | ||||||
| } | } | ||||||
|  |  | ||||||
| func (f *FlagSet) parseSingleShortArg(shorthands string, args []string) (outShorts string, outArgs []string, err error) { | func (f *FlagSet) parseSingleShortArg(shorthands string, args []string, fn parseFunc) (outShorts string, outArgs []string, err error) { | ||||||
| 	if strings.HasPrefix(shorthands, "test.") { | 	if strings.HasPrefix(shorthands, "test.") { | ||||||
| 		return | 		return | ||||||
| 	} | 	} | ||||||
| @@ -825,16 +899,16 @@ func (f *FlagSet) parseSingleShortArg(shorthands string, args []string) (outShor | |||||||
| 		err = f.failf("flag needs an argument: %q in -%s", c, shorthands) | 		err = f.failf("flag needs an argument: %q in -%s", c, shorthands) | ||||||
| 		return | 		return | ||||||
| 	} | 	} | ||||||
| 	err = f.setFlag(flag, value, shorthands) | 	err = fn(flag, value, shorthands) | ||||||
| 	return | 	return | ||||||
| } | } | ||||||
|  |  | ||||||
| func (f *FlagSet) parseShortArg(s string, args []string) (a []string, err error) { | func (f *FlagSet) parseShortArg(s string, args []string, fn parseFunc) (a []string, err error) { | ||||||
| 	a = args | 	a = args | ||||||
| 	shorthands := s[1:] | 	shorthands := s[1:] | ||||||
|  |  | ||||||
| 	for len(shorthands) > 0 { | 	for len(shorthands) > 0 { | ||||||
| 		shorthands, a, err = f.parseSingleShortArg(shorthands, args) | 		shorthands, a, err = f.parseSingleShortArg(shorthands, args, fn) | ||||||
| 		if err != nil { | 		if err != nil { | ||||||
| 			return | 			return | ||||||
| 		} | 		} | ||||||
| @@ -843,7 +917,7 @@ func (f *FlagSet) parseShortArg(s string, args []string) (a []string, err error) | |||||||
| 	return | 	return | ||||||
| } | } | ||||||
|  |  | ||||||
| func (f *FlagSet) parseArgs(args []string) (err error) { | func (f *FlagSet) parseArgs(args []string, fn parseFunc) (err error) { | ||||||
| 	for len(args) > 0 { | 	for len(args) > 0 { | ||||||
| 		s := args[0] | 		s := args[0] | ||||||
| 		args = args[1:] | 		args = args[1:] | ||||||
| @@ -863,9 +937,9 @@ func (f *FlagSet) parseArgs(args []string) (err error) { | |||||||
| 				f.args = append(f.args, args...) | 				f.args = append(f.args, args...) | ||||||
| 				break | 				break | ||||||
| 			} | 			} | ||||||
| 			args, err = f.parseLongArg(s, args) | 			args, err = f.parseLongArg(s, args, fn) | ||||||
| 		} else { | 		} else { | ||||||
| 			args, err = f.parseShortArg(s, args) | 			args, err = f.parseShortArg(s, args, fn) | ||||||
| 		} | 		} | ||||||
| 		if err != nil { | 		if err != nil { | ||||||
| 			return | 			return | ||||||
| @@ -881,7 +955,41 @@ func (f *FlagSet) parseArgs(args []string) (err error) { | |||||||
| func (f *FlagSet) Parse(arguments []string) error { | func (f *FlagSet) Parse(arguments []string) error { | ||||||
| 	f.parsed = true | 	f.parsed = true | ||||||
| 	f.args = make([]string, 0, len(arguments)) | 	f.args = make([]string, 0, len(arguments)) | ||||||
| 	err := f.parseArgs(arguments) |  | ||||||
|  | 	assign := func(flag *Flag, value, origArg string) error { | ||||||
|  | 		return f.setFlag(flag, value, origArg) | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	err := f.parseArgs(arguments, assign) | ||||||
|  | 	if err != nil { | ||||||
|  | 		switch f.errorHandling { | ||||||
|  | 		case ContinueOnError: | ||||||
|  | 			return err | ||||||
|  | 		case ExitOnError: | ||||||
|  | 			os.Exit(2) | ||||||
|  | 		case PanicOnError: | ||||||
|  | 			panic(err) | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | 	return nil | ||||||
|  | } | ||||||
|  |  | ||||||
|  | type parseFunc func(flag *Flag, value, origArg string) error | ||||||
|  |  | ||||||
|  | // ParseAll parses flag definitions from the argument list, which should not | ||||||
|  | // include the command name. The arguments for fn are flag and value. Must be | ||||||
|  | // called after all flags in the FlagSet are defined and before flags are | ||||||
|  | // accessed by the program. The return value will be ErrHelp if -help was set | ||||||
|  | // but not defined. | ||||||
|  | func (f *FlagSet) ParseAll(arguments []string, fn func(flag *Flag, value string) error) error { | ||||||
|  | 	f.parsed = true | ||||||
|  | 	f.args = make([]string, 0, len(arguments)) | ||||||
|  |  | ||||||
|  | 	assign := func(flag *Flag, value, origArg string) error { | ||||||
|  | 		return fn(flag, value) | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	err := f.parseArgs(arguments, assign) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		switch f.errorHandling { | 		switch f.errorHandling { | ||||||
| 		case ContinueOnError: | 		case ContinueOnError: | ||||||
| @@ -907,6 +1015,14 @@ func Parse() { | |||||||
| 	CommandLine.Parse(os.Args[1:]) | 	CommandLine.Parse(os.Args[1:]) | ||||||
| } | } | ||||||
|  |  | ||||||
|  | // ParseAll parses the command-line flags from os.Args[1:] and called fn for each. | ||||||
|  | // The arguments for fn are flag and value. Must be called after all flags are | ||||||
|  | // defined and before flags are accessed by the program. | ||||||
|  | func ParseAll(fn func(flag *Flag, value string) error) { | ||||||
|  | 	// Ignore errors; CommandLine is set for ExitOnError. | ||||||
|  | 	CommandLine.ParseAll(os.Args[1:], fn) | ||||||
|  | } | ||||||
|  |  | ||||||
| // SetInterspersed sets whether to support interspersed option/non-option arguments. | // SetInterspersed sets whether to support interspersed option/non-option arguments. | ||||||
| func SetInterspersed(interspersed bool) { | func SetInterspersed(interspersed bool) { | ||||||
| 	CommandLine.SetInterspersed(interspersed) | 	CommandLine.SetInterspersed(interspersed) | ||||||
|   | |||||||
							
								
								
									
										3
									
								
								vendor/github.com/spf13/pflag/golangflag.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								vendor/github.com/spf13/pflag/golangflag.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -6,13 +6,10 @@ package pflag | |||||||
|  |  | ||||||
| import ( | import ( | ||||||
| 	goflag "flag" | 	goflag "flag" | ||||||
| 	"fmt" |  | ||||||
| 	"reflect" | 	"reflect" | ||||||
| 	"strings" | 	"strings" | ||||||
| ) | ) | ||||||
|  |  | ||||||
| var _ = fmt.Print |  | ||||||
|  |  | ||||||
| // flagValueWrapper implements pflag.Value around a flag.Value.  The main | // flagValueWrapper implements pflag.Value around a flag.Value.  The main | ||||||
| // difference here is the addition of the Type method that returns a string | // difference here is the addition of the Type method that returns a string | ||||||
| // name of the type.  As this is generally unknown, we approximate that with | // name of the type.  As this is generally unknown, we approximate that with | ||||||
|   | |||||||
							
								
								
									
										2
									
								
								vendor/github.com/spf13/pflag/ip.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/github.com/spf13/pflag/ip.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -6,8 +6,6 @@ import ( | |||||||
| 	"strings" | 	"strings" | ||||||
| ) | ) | ||||||
|  |  | ||||||
| var _ = strings.TrimSpace |  | ||||||
|  |  | ||||||
| // -- net.IP value | // -- net.IP value | ||||||
| type ipValue net.IP | type ipValue net.IP | ||||||
|  |  | ||||||
|   | |||||||
							
								
								
									
										148
									
								
								vendor/github.com/spf13/pflag/ip_slice.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										148
									
								
								vendor/github.com/spf13/pflag/ip_slice.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,148 @@ | |||||||
|  | package pflag | ||||||
|  |  | ||||||
|  | import ( | ||||||
|  | 	"fmt" | ||||||
|  | 	"io" | ||||||
|  | 	"net" | ||||||
|  | 	"strings" | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | // -- ipSlice Value | ||||||
|  | type ipSliceValue struct { | ||||||
|  | 	value   *[]net.IP | ||||||
|  | 	changed bool | ||||||
|  | } | ||||||
|  |  | ||||||
|  | func newIPSliceValue(val []net.IP, p *[]net.IP) *ipSliceValue { | ||||||
|  | 	ipsv := new(ipSliceValue) | ||||||
|  | 	ipsv.value = p | ||||||
|  | 	*ipsv.value = val | ||||||
|  | 	return ipsv | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // Set converts, and assigns, the comma-separated IP argument string representation as the []net.IP value of this flag. | ||||||
|  | // If Set is called on a flag that already has a []net.IP assigned, the newly converted values will be appended. | ||||||
|  | func (s *ipSliceValue) Set(val string) error { | ||||||
|  |  | ||||||
|  | 	// remove all quote characters | ||||||
|  | 	rmQuote := strings.NewReplacer(`"`, "", `'`, "", "`", "") | ||||||
|  |  | ||||||
|  | 	// read flag arguments with CSV parser | ||||||
|  | 	ipStrSlice, err := readAsCSV(rmQuote.Replace(val)) | ||||||
|  | 	if err != nil && err != io.EOF { | ||||||
|  | 		return err | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	// parse ip values into slice | ||||||
|  | 	out := make([]net.IP, 0, len(ipStrSlice)) | ||||||
|  | 	for _, ipStr := range ipStrSlice { | ||||||
|  | 		ip := net.ParseIP(strings.TrimSpace(ipStr)) | ||||||
|  | 		if ip == nil { | ||||||
|  | 			return fmt.Errorf("invalid string being converted to IP address: %s", ipStr) | ||||||
|  | 		} | ||||||
|  | 		out = append(out, ip) | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	if !s.changed { | ||||||
|  | 		*s.value = out | ||||||
|  | 	} else { | ||||||
|  | 		*s.value = append(*s.value, out...) | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	s.changed = true | ||||||
|  |  | ||||||
|  | 	return nil | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // Type returns a string that uniquely represents this flag's type. | ||||||
|  | func (s *ipSliceValue) Type() string { | ||||||
|  | 	return "ipSlice" | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // String defines a "native" format for this net.IP slice flag value. | ||||||
|  | func (s *ipSliceValue) String() string { | ||||||
|  |  | ||||||
|  | 	ipStrSlice := make([]string, len(*s.value)) | ||||||
|  | 	for i, ip := range *s.value { | ||||||
|  | 		ipStrSlice[i] = ip.String() | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	out, _ := writeAsCSV(ipStrSlice) | ||||||
|  |  | ||||||
|  | 	return "[" + out + "]" | ||||||
|  | } | ||||||
|  |  | ||||||
|  | func ipSliceConv(val string) (interface{}, error) { | ||||||
|  | 	val = strings.Trim(val, "[]") | ||||||
|  | 	// Emtpy string would cause a slice with one (empty) entry | ||||||
|  | 	if len(val) == 0 { | ||||||
|  | 		return []net.IP{}, nil | ||||||
|  | 	} | ||||||
|  | 	ss := strings.Split(val, ",") | ||||||
|  | 	out := make([]net.IP, len(ss)) | ||||||
|  | 	for i, sval := range ss { | ||||||
|  | 		ip := net.ParseIP(strings.TrimSpace(sval)) | ||||||
|  | 		if ip == nil { | ||||||
|  | 			return nil, fmt.Errorf("invalid string being converted to IP address: %s", sval) | ||||||
|  | 		} | ||||||
|  | 		out[i] = ip | ||||||
|  | 	} | ||||||
|  | 	return out, nil | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // GetIPSlice returns the []net.IP value of a flag with the given name | ||||||
|  | func (f *FlagSet) GetIPSlice(name string) ([]net.IP, error) { | ||||||
|  | 	val, err := f.getFlagType(name, "ipSlice", ipSliceConv) | ||||||
|  | 	if err != nil { | ||||||
|  | 		return []net.IP{}, err | ||||||
|  | 	} | ||||||
|  | 	return val.([]net.IP), nil | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // IPSliceVar defines a ipSlice flag with specified name, default value, and usage string. | ||||||
|  | // The argument p points to a []net.IP variable in which to store the value of the flag. | ||||||
|  | func (f *FlagSet) IPSliceVar(p *[]net.IP, name string, value []net.IP, usage string) { | ||||||
|  | 	f.VarP(newIPSliceValue(value, p), name, "", usage) | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // IPSliceVarP is like IPSliceVar, but accepts a shorthand letter that can be used after a single dash. | ||||||
|  | func (f *FlagSet) IPSliceVarP(p *[]net.IP, name, shorthand string, value []net.IP, usage string) { | ||||||
|  | 	f.VarP(newIPSliceValue(value, p), name, shorthand, usage) | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // IPSliceVar defines a []net.IP flag with specified name, default value, and usage string. | ||||||
|  | // The argument p points to a []net.IP variable in which to store the value of the flag. | ||||||
|  | func IPSliceVar(p *[]net.IP, name string, value []net.IP, usage string) { | ||||||
|  | 	CommandLine.VarP(newIPSliceValue(value, p), name, "", usage) | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // IPSliceVarP is like IPSliceVar, but accepts a shorthand letter that can be used after a single dash. | ||||||
|  | func IPSliceVarP(p *[]net.IP, name, shorthand string, value []net.IP, usage string) { | ||||||
|  | 	CommandLine.VarP(newIPSliceValue(value, p), name, shorthand, usage) | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // IPSlice defines a []net.IP flag with specified name, default value, and usage string. | ||||||
|  | // The return value is the address of a []net.IP variable that stores the value of that flag. | ||||||
|  | func (f *FlagSet) IPSlice(name string, value []net.IP, usage string) *[]net.IP { | ||||||
|  | 	p := []net.IP{} | ||||||
|  | 	f.IPSliceVarP(&p, name, "", value, usage) | ||||||
|  | 	return &p | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // IPSliceP is like IPSlice, but accepts a shorthand letter that can be used after a single dash. | ||||||
|  | func (f *FlagSet) IPSliceP(name, shorthand string, value []net.IP, usage string) *[]net.IP { | ||||||
|  | 	p := []net.IP{} | ||||||
|  | 	f.IPSliceVarP(&p, name, shorthand, value, usage) | ||||||
|  | 	return &p | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // IPSlice defines a []net.IP flag with specified name, default value, and usage string. | ||||||
|  | // The return value is the address of a []net.IP variable that stores the value of the flag. | ||||||
|  | func IPSlice(name string, value []net.IP, usage string) *[]net.IP { | ||||||
|  | 	return CommandLine.IPSliceP(name, "", value, usage) | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // IPSliceP is like IPSlice, but accepts a shorthand letter that can be used after a single dash. | ||||||
|  | func IPSliceP(name, shorthand string, value []net.IP, usage string) *[]net.IP { | ||||||
|  | 	return CommandLine.IPSliceP(name, shorthand, value, usage) | ||||||
|  | } | ||||||
							
								
								
									
										2
									
								
								vendor/github.com/spf13/pflag/ipnet.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/github.com/spf13/pflag/ipnet.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -27,8 +27,6 @@ func (*ipNetValue) Type() string { | |||||||
| 	return "ipNet" | 	return "ipNet" | ||||||
| } | } | ||||||
|  |  | ||||||
| var _ = strings.TrimSpace |  | ||||||
|  |  | ||||||
| func newIPNetValue(val net.IPNet, p *net.IPNet) *ipNetValue { | func newIPNetValue(val net.IPNet, p *net.IPNet) *ipNetValue { | ||||||
| 	*p = val | 	*p = val | ||||||
| 	return (*ipNetValue)(p) | 	return (*ipNetValue)(p) | ||||||
|   | |||||||
							
								
								
									
										6
									
								
								vendor/github.com/spf13/pflag/string_array.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										6
									
								
								vendor/github.com/spf13/pflag/string_array.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,11 +1,5 @@ | |||||||
| package pflag | package pflag | ||||||
|  |  | ||||||
| import ( |  | ||||||
| 	"fmt" |  | ||||||
| ) |  | ||||||
|  |  | ||||||
| var _ = fmt.Fprint |  | ||||||
|  |  | ||||||
| // -- stringArray Value | // -- stringArray Value | ||||||
| type stringArrayValue struct { | type stringArrayValue struct { | ||||||
| 	value   *[]string | 	value   *[]string | ||||||
|   | |||||||
							
								
								
									
										5
									
								
								vendor/github.com/spf13/pflag/string_slice.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										5
									
								
								vendor/github.com/spf13/pflag/string_slice.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -3,12 +3,9 @@ package pflag | |||||||
| import ( | import ( | ||||||
| 	"bytes" | 	"bytes" | ||||||
| 	"encoding/csv" | 	"encoding/csv" | ||||||
| 	"fmt" |  | ||||||
| 	"strings" | 	"strings" | ||||||
| ) | ) | ||||||
|  |  | ||||||
| var _ = fmt.Fprint |  | ||||||
|  |  | ||||||
| // -- stringSlice Value | // -- stringSlice Value | ||||||
| type stringSliceValue struct { | type stringSliceValue struct { | ||||||
| 	value   *[]string | 	value   *[]string | ||||||
| @@ -39,7 +36,7 @@ func writeAsCSV(vals []string) (string, error) { | |||||||
| 		return "", err | 		return "", err | ||||||
| 	} | 	} | ||||||
| 	w.Flush() | 	w.Flush() | ||||||
| 	return strings.TrimSuffix(b.String(), fmt.Sprintln()), nil | 	return strings.TrimSuffix(b.String(), "\n"), nil | ||||||
| } | } | ||||||
|  |  | ||||||
| func (s *stringSliceValue) Set(val string) error { | func (s *stringSliceValue) Set(val string) error { | ||||||
|   | |||||||
							
								
								
									
										126
									
								
								vendor/github.com/spf13/pflag/uint_slice.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										126
									
								
								vendor/github.com/spf13/pflag/uint_slice.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,126 @@ | |||||||
|  | package pflag | ||||||
|  |  | ||||||
|  | import ( | ||||||
|  | 	"fmt" | ||||||
|  | 	"strconv" | ||||||
|  | 	"strings" | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | // -- uintSlice Value | ||||||
|  | type uintSliceValue struct { | ||||||
|  | 	value   *[]uint | ||||||
|  | 	changed bool | ||||||
|  | } | ||||||
|  |  | ||||||
|  | func newUintSliceValue(val []uint, p *[]uint) *uintSliceValue { | ||||||
|  | 	uisv := new(uintSliceValue) | ||||||
|  | 	uisv.value = p | ||||||
|  | 	*uisv.value = val | ||||||
|  | 	return uisv | ||||||
|  | } | ||||||
|  |  | ||||||
|  | func (s *uintSliceValue) Set(val string) error { | ||||||
|  | 	ss := strings.Split(val, ",") | ||||||
|  | 	out := make([]uint, len(ss)) | ||||||
|  | 	for i, d := range ss { | ||||||
|  | 		u, err := strconv.ParseUint(d, 10, 0) | ||||||
|  | 		if err != nil { | ||||||
|  | 			return err | ||||||
|  | 		} | ||||||
|  | 		out[i] = uint(u) | ||||||
|  | 	} | ||||||
|  | 	if !s.changed { | ||||||
|  | 		*s.value = out | ||||||
|  | 	} else { | ||||||
|  | 		*s.value = append(*s.value, out...) | ||||||
|  | 	} | ||||||
|  | 	s.changed = true | ||||||
|  | 	return nil | ||||||
|  | } | ||||||
|  |  | ||||||
|  | func (s *uintSliceValue) Type() string { | ||||||
|  | 	return "uintSlice" | ||||||
|  | } | ||||||
|  |  | ||||||
|  | func (s *uintSliceValue) String() string { | ||||||
|  | 	out := make([]string, len(*s.value)) | ||||||
|  | 	for i, d := range *s.value { | ||||||
|  | 		out[i] = fmt.Sprintf("%d", d) | ||||||
|  | 	} | ||||||
|  | 	return "[" + strings.Join(out, ",") + "]" | ||||||
|  | } | ||||||
|  |  | ||||||
|  | func uintSliceConv(val string) (interface{}, error) { | ||||||
|  | 	val = strings.Trim(val, "[]") | ||||||
|  | 	// Empty string would cause a slice with one (empty) entry | ||||||
|  | 	if len(val) == 0 { | ||||||
|  | 		return []uint{}, nil | ||||||
|  | 	} | ||||||
|  | 	ss := strings.Split(val, ",") | ||||||
|  | 	out := make([]uint, len(ss)) | ||||||
|  | 	for i, d := range ss { | ||||||
|  | 		u, err := strconv.ParseUint(d, 10, 0) | ||||||
|  | 		if err != nil { | ||||||
|  | 			return nil, err | ||||||
|  | 		} | ||||||
|  | 		out[i] = uint(u) | ||||||
|  | 	} | ||||||
|  | 	return out, nil | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // GetUintSlice returns the []uint value of a flag with the given name. | ||||||
|  | func (f *FlagSet) GetUintSlice(name string) ([]uint, error) { | ||||||
|  | 	val, err := f.getFlagType(name, "uintSlice", uintSliceConv) | ||||||
|  | 	if err != nil { | ||||||
|  | 		return []uint{}, err | ||||||
|  | 	} | ||||||
|  | 	return val.([]uint), nil | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // UintSliceVar defines a uintSlice flag with specified name, default value, and usage string. | ||||||
|  | // The argument p points to a []uint variable in which to store the value of the flag. | ||||||
|  | func (f *FlagSet) UintSliceVar(p *[]uint, name string, value []uint, usage string) { | ||||||
|  | 	f.VarP(newUintSliceValue(value, p), name, "", usage) | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // UintSliceVarP is like UintSliceVar, but accepts a shorthand letter that can be used after a single dash. | ||||||
|  | func (f *FlagSet) UintSliceVarP(p *[]uint, name, shorthand string, value []uint, usage string) { | ||||||
|  | 	f.VarP(newUintSliceValue(value, p), name, shorthand, usage) | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // UintSliceVar defines a uint[] flag with specified name, default value, and usage string. | ||||||
|  | // The argument p points to a uint[] variable in which to store the value of the flag. | ||||||
|  | func UintSliceVar(p *[]uint, name string, value []uint, usage string) { | ||||||
|  | 	CommandLine.VarP(newUintSliceValue(value, p), name, "", usage) | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // UintSliceVarP is like the UintSliceVar, but accepts a shorthand letter that can be used after a single dash. | ||||||
|  | func UintSliceVarP(p *[]uint, name, shorthand string, value []uint, usage string) { | ||||||
|  | 	CommandLine.VarP(newUintSliceValue(value, p), name, shorthand, usage) | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // UintSlice defines a []uint flag with specified name, default value, and usage string. | ||||||
|  | // The return value is the address of a []uint variable that stores the value of the flag. | ||||||
|  | func (f *FlagSet) UintSlice(name string, value []uint, usage string) *[]uint { | ||||||
|  | 	p := []uint{} | ||||||
|  | 	f.UintSliceVarP(&p, name, "", value, usage) | ||||||
|  | 	return &p | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // UintSliceP is like UintSlice, but accepts a shorthand letter that can be used after a single dash. | ||||||
|  | func (f *FlagSet) UintSliceP(name, shorthand string, value []uint, usage string) *[]uint { | ||||||
|  | 	p := []uint{} | ||||||
|  | 	f.UintSliceVarP(&p, name, shorthand, value, usage) | ||||||
|  | 	return &p | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // UintSlice defines a []uint flag with specified name, default value, and usage string. | ||||||
|  | // The return value is the address of a []uint variable that stores the value of the flag. | ||||||
|  | func UintSlice(name string, value []uint, usage string) *[]uint { | ||||||
|  | 	return CommandLine.UintSliceP(name, "", value, usage) | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // UintSliceP is like UintSlice, but accepts a shorthand letter that can be used after a single dash. | ||||||
|  | func UintSliceP(name, shorthand string, value []uint, usage string) *[]uint { | ||||||
|  | 	return CommandLine.UintSliceP(name, shorthand, value, usage) | ||||||
|  | } | ||||||
		Reference in New Issue
	
	Block a user
	 xilabao
					xilabao