mirror of
				https://gitee.com/gitea/gitea
				synced 2025-11-04 16:40:24 +08:00 
			
		
		
		
	upgrade to use testfixtures v3 (#11904)
* upgrade to use testfixtures v3 * simplify logic * make vendor * update per @lunny * Update templates/repo/empty.tmpl * Update templates/repo/empty.tmpl Co-authored-by: Lauris BH <lauris@nix.lv>
This commit is contained in:
		
							
								
								
									
										7
									
								
								vendor/github.com/spf13/pflag/.travis.yml
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										7
									
								
								vendor/github.com/spf13/pflag/.travis.yml
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -3,8 +3,9 @@ sudo: false
 | 
			
		||||
language: go
 | 
			
		||||
 | 
			
		||||
go:
 | 
			
		||||
  - 1.7.3
 | 
			
		||||
  - 1.8.1
 | 
			
		||||
  - 1.9.x
 | 
			
		||||
  - 1.10.x
 | 
			
		||||
  - 1.11.x
 | 
			
		||||
  - tip
 | 
			
		||||
 | 
			
		||||
matrix:
 | 
			
		||||
@@ -12,7 +13,7 @@ matrix:
 | 
			
		||||
    - go: tip
 | 
			
		||||
 | 
			
		||||
install:
 | 
			
		||||
  - go get github.com/golang/lint/golint
 | 
			
		||||
  - go get golang.org/x/lint/golint
 | 
			
		||||
  - export PATH=$GOPATH/bin:$PATH
 | 
			
		||||
  - go install ./...
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										4
									
								
								vendor/github.com/spf13/pflag/README.md
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								vendor/github.com/spf13/pflag/README.md
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -86,8 +86,8 @@ fmt.Println("ip has value ", *ip)
 | 
			
		||||
fmt.Println("flagvar has value ", flagvar)
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
There are helpers function to get values later if you have the FlagSet but
 | 
			
		||||
it was difficult to keep up with all of the flag pointers in your code.
 | 
			
		||||
There are helper functions available to get the value stored in a Flag if you have a FlagSet but find
 | 
			
		||||
it difficult to keep up with all of the pointers in your code.
 | 
			
		||||
If you have a pflag.FlagSet with a flag called 'flagname' of type int you
 | 
			
		||||
can use GetInt() to get the int value. But notice that 'flagname' must exist
 | 
			
		||||
and it must be an int. GetString("flagname") will fail.
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										38
									
								
								vendor/github.com/spf13/pflag/bool_slice.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										38
									
								
								vendor/github.com/spf13/pflag/bool_slice.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -71,6 +71,44 @@ func (s *boolSliceValue) String() string {
 | 
			
		||||
	return "[" + out + "]"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (s *boolSliceValue) fromString(val string) (bool, error) {
 | 
			
		||||
	return strconv.ParseBool(val)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (s *boolSliceValue) toString(val bool) string {
 | 
			
		||||
	return strconv.FormatBool(val)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (s *boolSliceValue) Append(val string) error {
 | 
			
		||||
	i, err := s.fromString(val)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
	*s.value = append(*s.value, i)
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (s *boolSliceValue) Replace(val []string) error {
 | 
			
		||||
	out := make([]bool, len(val))
 | 
			
		||||
	for i, d := range val {
 | 
			
		||||
		var err error
 | 
			
		||||
		out[i], err = s.fromString(d)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return err
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	*s.value = out
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (s *boolSliceValue) GetSlice() []string {
 | 
			
		||||
	out := make([]string, len(*s.value))
 | 
			
		||||
	for i, d := range *s.value {
 | 
			
		||||
		out[i] = s.toString(d)
 | 
			
		||||
	}
 | 
			
		||||
	return out
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func boolSliceConv(val string) (interface{}, error) {
 | 
			
		||||
	val = strings.Trim(val, "[]")
 | 
			
		||||
	// Empty string would cause a slice with one (empty) entry
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										4
									
								
								vendor/github.com/spf13/pflag/count.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								vendor/github.com/spf13/pflag/count.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -46,7 +46,7 @@ func (f *FlagSet) GetCount(name string) (int, error) {
 | 
			
		||||
 | 
			
		||||
// CountVar defines a count flag with specified name, default value, and usage string.
 | 
			
		||||
// The argument p points to an int variable in which to store the value of the flag.
 | 
			
		||||
// A count flag will add 1 to its value evey time it is found on the command line
 | 
			
		||||
// A count flag will add 1 to its value every time it is found on the command line
 | 
			
		||||
func (f *FlagSet) CountVar(p *int, name string, usage string) {
 | 
			
		||||
	f.CountVarP(p, name, "", usage)
 | 
			
		||||
}
 | 
			
		||||
@@ -69,7 +69,7 @@ func CountVarP(p *int, name, shorthand string, usage string) {
 | 
			
		||||
 | 
			
		||||
// Count defines a count flag with specified name, default value, and usage string.
 | 
			
		||||
// The return value is the address of an int variable that stores the value of the flag.
 | 
			
		||||
// A count flag will add 1 to its value evey time it is found on the command line
 | 
			
		||||
// A count flag will add 1 to its value every time it is found on the command line
 | 
			
		||||
func (f *FlagSet) Count(name string, usage string) *int {
 | 
			
		||||
	p := new(int)
 | 
			
		||||
	f.CountVarP(p, name, "", usage)
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										38
									
								
								vendor/github.com/spf13/pflag/duration_slice.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										38
									
								
								vendor/github.com/spf13/pflag/duration_slice.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -51,6 +51,44 @@ func (s *durationSliceValue) String() string {
 | 
			
		||||
	return "[" + strings.Join(out, ",") + "]"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (s *durationSliceValue) fromString(val string) (time.Duration, error) {
 | 
			
		||||
	return time.ParseDuration(val)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (s *durationSliceValue) toString(val time.Duration) string {
 | 
			
		||||
	return fmt.Sprintf("%s", val)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (s *durationSliceValue) Append(val string) error {
 | 
			
		||||
	i, err := s.fromString(val)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
	*s.value = append(*s.value, i)
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (s *durationSliceValue) Replace(val []string) error {
 | 
			
		||||
	out := make([]time.Duration, len(val))
 | 
			
		||||
	for i, d := range val {
 | 
			
		||||
		var err error
 | 
			
		||||
		out[i], err = s.fromString(d)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return err
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	*s.value = out
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (s *durationSliceValue) GetSlice() []string {
 | 
			
		||||
	out := make([]string, len(*s.value))
 | 
			
		||||
	for i, d := range *s.value {
 | 
			
		||||
		out[i] = s.toString(d)
 | 
			
		||||
	}
 | 
			
		||||
	return out
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func durationSliceConv(val string) (interface{}, error) {
 | 
			
		||||
	val = strings.Trim(val, "[]")
 | 
			
		||||
	// Empty string would cause a slice with one (empty) entry
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										16
									
								
								vendor/github.com/spf13/pflag/flag.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										16
									
								
								vendor/github.com/spf13/pflag/flag.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -57,9 +57,9 @@ that give one-letter shorthands for flags. You can use these by appending
 | 
			
		||||
	var ip = flag.IntP("flagname", "f", 1234, "help message")
 | 
			
		||||
	var flagvar bool
 | 
			
		||||
	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.
 | 
			
		||||
Boolean shorthand flags can be combined with other shorthand flags.
 | 
			
		||||
 | 
			
		||||
@@ -190,6 +190,18 @@ type Value interface {
 | 
			
		||||
	Type() string
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// SliceValue is a secondary interface to all flags which hold a list
 | 
			
		||||
// of values.  This allows full control over the value of list flags,
 | 
			
		||||
// and avoids complicated marshalling and unmarshalling to csv.
 | 
			
		||||
type SliceValue interface {
 | 
			
		||||
	// Append adds the specified value to the end of the flag value list.
 | 
			
		||||
	Append(string) error
 | 
			
		||||
	// Replace will fully overwrite any data currently in the flag value list.
 | 
			
		||||
	Replace([]string) error
 | 
			
		||||
	// GetSlice returns the flag value list as an array of strings.
 | 
			
		||||
	GetSlice() []string
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// sortFlags returns the flags as a slice in lexicographical sorted order.
 | 
			
		||||
func sortFlags(flags map[NormalizedName]*Flag) []*Flag {
 | 
			
		||||
	list := make(sort.StringSlice, len(flags))
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										174
									
								
								vendor/github.com/spf13/pflag/float32_slice.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										174
									
								
								vendor/github.com/spf13/pflag/float32_slice.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,174 @@
 | 
			
		||||
package pflag
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"strconv"
 | 
			
		||||
	"strings"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// -- float32Slice Value
 | 
			
		||||
type float32SliceValue struct {
 | 
			
		||||
	value   *[]float32
 | 
			
		||||
	changed bool
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func newFloat32SliceValue(val []float32, p *[]float32) *float32SliceValue {
 | 
			
		||||
	isv := new(float32SliceValue)
 | 
			
		||||
	isv.value = p
 | 
			
		||||
	*isv.value = val
 | 
			
		||||
	return isv
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (s *float32SliceValue) Set(val string) error {
 | 
			
		||||
	ss := strings.Split(val, ",")
 | 
			
		||||
	out := make([]float32, len(ss))
 | 
			
		||||
	for i, d := range ss {
 | 
			
		||||
		var err error
 | 
			
		||||
		var temp64 float64
 | 
			
		||||
		temp64, err = strconv.ParseFloat(d, 32)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return err
 | 
			
		||||
		}
 | 
			
		||||
		out[i] = float32(temp64)
 | 
			
		||||
 | 
			
		||||
	}
 | 
			
		||||
	if !s.changed {
 | 
			
		||||
		*s.value = out
 | 
			
		||||
	} else {
 | 
			
		||||
		*s.value = append(*s.value, out...)
 | 
			
		||||
	}
 | 
			
		||||
	s.changed = true
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (s *float32SliceValue) Type() string {
 | 
			
		||||
	return "float32Slice"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (s *float32SliceValue) String() string {
 | 
			
		||||
	out := make([]string, len(*s.value))
 | 
			
		||||
	for i, d := range *s.value {
 | 
			
		||||
		out[i] = fmt.Sprintf("%f", d)
 | 
			
		||||
	}
 | 
			
		||||
	return "[" + strings.Join(out, ",") + "]"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (s *float32SliceValue) fromString(val string) (float32, error) {
 | 
			
		||||
	t64, err := strconv.ParseFloat(val, 32)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return 0, err
 | 
			
		||||
	}
 | 
			
		||||
	return float32(t64), nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (s *float32SliceValue) toString(val float32) string {
 | 
			
		||||
	return fmt.Sprintf("%f", val)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (s *float32SliceValue) Append(val string) error {
 | 
			
		||||
	i, err := s.fromString(val)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
	*s.value = append(*s.value, i)
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (s *float32SliceValue) Replace(val []string) error {
 | 
			
		||||
	out := make([]float32, len(val))
 | 
			
		||||
	for i, d := range val {
 | 
			
		||||
		var err error
 | 
			
		||||
		out[i], err = s.fromString(d)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return err
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	*s.value = out
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (s *float32SliceValue) GetSlice() []string {
 | 
			
		||||
	out := make([]string, len(*s.value))
 | 
			
		||||
	for i, d := range *s.value {
 | 
			
		||||
		out[i] = s.toString(d)
 | 
			
		||||
	}
 | 
			
		||||
	return out
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func float32SliceConv(val string) (interface{}, error) {
 | 
			
		||||
	val = strings.Trim(val, "[]")
 | 
			
		||||
	// Empty string would cause a slice with one (empty) entry
 | 
			
		||||
	if len(val) == 0 {
 | 
			
		||||
		return []float32{}, nil
 | 
			
		||||
	}
 | 
			
		||||
	ss := strings.Split(val, ",")
 | 
			
		||||
	out := make([]float32, len(ss))
 | 
			
		||||
	for i, d := range ss {
 | 
			
		||||
		var err error
 | 
			
		||||
		var temp64 float64
 | 
			
		||||
		temp64, err = strconv.ParseFloat(d, 32)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return nil, err
 | 
			
		||||
		}
 | 
			
		||||
		out[i] = float32(temp64)
 | 
			
		||||
 | 
			
		||||
	}
 | 
			
		||||
	return out, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// GetFloat32Slice return the []float32 value of a flag with the given name
 | 
			
		||||
func (f *FlagSet) GetFloat32Slice(name string) ([]float32, error) {
 | 
			
		||||
	val, err := f.getFlagType(name, "float32Slice", float32SliceConv)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return []float32{}, err
 | 
			
		||||
	}
 | 
			
		||||
	return val.([]float32), nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Float32SliceVar defines a float32Slice flag with specified name, default value, and usage string.
 | 
			
		||||
// The argument p points to a []float32 variable in which to store the value of the flag.
 | 
			
		||||
func (f *FlagSet) Float32SliceVar(p *[]float32, name string, value []float32, usage string) {
 | 
			
		||||
	f.VarP(newFloat32SliceValue(value, p), name, "", usage)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Float32SliceVarP is like Float32SliceVar, but accepts a shorthand letter that can be used after a single dash.
 | 
			
		||||
func (f *FlagSet) Float32SliceVarP(p *[]float32, name, shorthand string, value []float32, usage string) {
 | 
			
		||||
	f.VarP(newFloat32SliceValue(value, p), name, shorthand, usage)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Float32SliceVar defines a float32[] flag with specified name, default value, and usage string.
 | 
			
		||||
// The argument p points to a float32[] variable in which to store the value of the flag.
 | 
			
		||||
func Float32SliceVar(p *[]float32, name string, value []float32, usage string) {
 | 
			
		||||
	CommandLine.VarP(newFloat32SliceValue(value, p), name, "", usage)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Float32SliceVarP is like Float32SliceVar, but accepts a shorthand letter that can be used after a single dash.
 | 
			
		||||
func Float32SliceVarP(p *[]float32, name, shorthand string, value []float32, usage string) {
 | 
			
		||||
	CommandLine.VarP(newFloat32SliceValue(value, p), name, shorthand, usage)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Float32Slice defines a []float32 flag with specified name, default value, and usage string.
 | 
			
		||||
// The return value is the address of a []float32 variable that stores the value of the flag.
 | 
			
		||||
func (f *FlagSet) Float32Slice(name string, value []float32, usage string) *[]float32 {
 | 
			
		||||
	p := []float32{}
 | 
			
		||||
	f.Float32SliceVarP(&p, name, "", value, usage)
 | 
			
		||||
	return &p
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Float32SliceP is like Float32Slice, but accepts a shorthand letter that can be used after a single dash.
 | 
			
		||||
func (f *FlagSet) Float32SliceP(name, shorthand string, value []float32, usage string) *[]float32 {
 | 
			
		||||
	p := []float32{}
 | 
			
		||||
	f.Float32SliceVarP(&p, name, shorthand, value, usage)
 | 
			
		||||
	return &p
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Float32Slice defines a []float32 flag with specified name, default value, and usage string.
 | 
			
		||||
// The return value is the address of a []float32 variable that stores the value of the flag.
 | 
			
		||||
func Float32Slice(name string, value []float32, usage string) *[]float32 {
 | 
			
		||||
	return CommandLine.Float32SliceP(name, "", value, usage)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Float32SliceP is like Float32Slice, but accepts a shorthand letter that can be used after a single dash.
 | 
			
		||||
func Float32SliceP(name, shorthand string, value []float32, usage string) *[]float32 {
 | 
			
		||||
	return CommandLine.Float32SliceP(name, shorthand, value, usage)
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										166
									
								
								vendor/github.com/spf13/pflag/float64_slice.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										166
									
								
								vendor/github.com/spf13/pflag/float64_slice.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,166 @@
 | 
			
		||||
package pflag
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"strconv"
 | 
			
		||||
	"strings"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// -- float64Slice Value
 | 
			
		||||
type float64SliceValue struct {
 | 
			
		||||
	value   *[]float64
 | 
			
		||||
	changed bool
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func newFloat64SliceValue(val []float64, p *[]float64) *float64SliceValue {
 | 
			
		||||
	isv := new(float64SliceValue)
 | 
			
		||||
	isv.value = p
 | 
			
		||||
	*isv.value = val
 | 
			
		||||
	return isv
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (s *float64SliceValue) Set(val string) error {
 | 
			
		||||
	ss := strings.Split(val, ",")
 | 
			
		||||
	out := make([]float64, len(ss))
 | 
			
		||||
	for i, d := range ss {
 | 
			
		||||
		var err error
 | 
			
		||||
		out[i], err = strconv.ParseFloat(d, 64)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return err
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
	}
 | 
			
		||||
	if !s.changed {
 | 
			
		||||
		*s.value = out
 | 
			
		||||
	} else {
 | 
			
		||||
		*s.value = append(*s.value, out...)
 | 
			
		||||
	}
 | 
			
		||||
	s.changed = true
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (s *float64SliceValue) Type() string {
 | 
			
		||||
	return "float64Slice"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (s *float64SliceValue) String() string {
 | 
			
		||||
	out := make([]string, len(*s.value))
 | 
			
		||||
	for i, d := range *s.value {
 | 
			
		||||
		out[i] = fmt.Sprintf("%f", d)
 | 
			
		||||
	}
 | 
			
		||||
	return "[" + strings.Join(out, ",") + "]"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (s *float64SliceValue) fromString(val string) (float64, error) {
 | 
			
		||||
	return strconv.ParseFloat(val, 64)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (s *float64SliceValue) toString(val float64) string {
 | 
			
		||||
	return fmt.Sprintf("%f", val)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (s *float64SliceValue) Append(val string) error {
 | 
			
		||||
	i, err := s.fromString(val)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
	*s.value = append(*s.value, i)
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (s *float64SliceValue) Replace(val []string) error {
 | 
			
		||||
	out := make([]float64, len(val))
 | 
			
		||||
	for i, d := range val {
 | 
			
		||||
		var err error
 | 
			
		||||
		out[i], err = s.fromString(d)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return err
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	*s.value = out
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (s *float64SliceValue) GetSlice() []string {
 | 
			
		||||
	out := make([]string, len(*s.value))
 | 
			
		||||
	for i, d := range *s.value {
 | 
			
		||||
		out[i] = s.toString(d)
 | 
			
		||||
	}
 | 
			
		||||
	return out
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func float64SliceConv(val string) (interface{}, error) {
 | 
			
		||||
	val = strings.Trim(val, "[]")
 | 
			
		||||
	// Empty string would cause a slice with one (empty) entry
 | 
			
		||||
	if len(val) == 0 {
 | 
			
		||||
		return []float64{}, nil
 | 
			
		||||
	}
 | 
			
		||||
	ss := strings.Split(val, ",")
 | 
			
		||||
	out := make([]float64, len(ss))
 | 
			
		||||
	for i, d := range ss {
 | 
			
		||||
		var err error
 | 
			
		||||
		out[i], err = strconv.ParseFloat(d, 64)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return nil, err
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
	}
 | 
			
		||||
	return out, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// GetFloat64Slice return the []float64 value of a flag with the given name
 | 
			
		||||
func (f *FlagSet) GetFloat64Slice(name string) ([]float64, error) {
 | 
			
		||||
	val, err := f.getFlagType(name, "float64Slice", float64SliceConv)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return []float64{}, err
 | 
			
		||||
	}
 | 
			
		||||
	return val.([]float64), nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Float64SliceVar defines a float64Slice flag with specified name, default value, and usage string.
 | 
			
		||||
// The argument p points to a []float64 variable in which to store the value of the flag.
 | 
			
		||||
func (f *FlagSet) Float64SliceVar(p *[]float64, name string, value []float64, usage string) {
 | 
			
		||||
	f.VarP(newFloat64SliceValue(value, p), name, "", usage)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Float64SliceVarP is like Float64SliceVar, but accepts a shorthand letter that can be used after a single dash.
 | 
			
		||||
func (f *FlagSet) Float64SliceVarP(p *[]float64, name, shorthand string, value []float64, usage string) {
 | 
			
		||||
	f.VarP(newFloat64SliceValue(value, p), name, shorthand, usage)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Float64SliceVar defines a float64[] flag with specified name, default value, and usage string.
 | 
			
		||||
// The argument p points to a float64[] variable in which to store the value of the flag.
 | 
			
		||||
func Float64SliceVar(p *[]float64, name string, value []float64, usage string) {
 | 
			
		||||
	CommandLine.VarP(newFloat64SliceValue(value, p), name, "", usage)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Float64SliceVarP is like Float64SliceVar, but accepts a shorthand letter that can be used after a single dash.
 | 
			
		||||
func Float64SliceVarP(p *[]float64, name, shorthand string, value []float64, usage string) {
 | 
			
		||||
	CommandLine.VarP(newFloat64SliceValue(value, p), name, shorthand, usage)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Float64Slice defines a []float64 flag with specified name, default value, and usage string.
 | 
			
		||||
// The return value is the address of a []float64 variable that stores the value of the flag.
 | 
			
		||||
func (f *FlagSet) Float64Slice(name string, value []float64, usage string) *[]float64 {
 | 
			
		||||
	p := []float64{}
 | 
			
		||||
	f.Float64SliceVarP(&p, name, "", value, usage)
 | 
			
		||||
	return &p
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Float64SliceP is like Float64Slice, but accepts a shorthand letter that can be used after a single dash.
 | 
			
		||||
func (f *FlagSet) Float64SliceP(name, shorthand string, value []float64, usage string) *[]float64 {
 | 
			
		||||
	p := []float64{}
 | 
			
		||||
	f.Float64SliceVarP(&p, name, shorthand, value, usage)
 | 
			
		||||
	return &p
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Float64Slice defines a []float64 flag with specified name, default value, and usage string.
 | 
			
		||||
// The return value is the address of a []float64 variable that stores the value of the flag.
 | 
			
		||||
func Float64Slice(name string, value []float64, usage string) *[]float64 {
 | 
			
		||||
	return CommandLine.Float64SliceP(name, "", value, usage)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Float64SliceP is like Float64Slice, but accepts a shorthand letter that can be used after a single dash.
 | 
			
		||||
func Float64SliceP(name, shorthand string, value []float64, usage string) *[]float64 {
 | 
			
		||||
	return CommandLine.Float64SliceP(name, shorthand, value, usage)
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										3
									
								
								vendor/github.com/spf13/pflag/go.mod
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								vendor/github.com/spf13/pflag/go.mod
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,3 @@
 | 
			
		||||
module github.com/spf13/pflag
 | 
			
		||||
 | 
			
		||||
go 1.12
 | 
			
		||||
							
								
								
									
										0
									
								
								vendor/github.com/spf13/pflag/go.sum
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								vendor/github.com/spf13/pflag/go.sum
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
								
								
									
										174
									
								
								vendor/github.com/spf13/pflag/int32_slice.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										174
									
								
								vendor/github.com/spf13/pflag/int32_slice.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,174 @@
 | 
			
		||||
package pflag
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"strconv"
 | 
			
		||||
	"strings"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// -- int32Slice Value
 | 
			
		||||
type int32SliceValue struct {
 | 
			
		||||
	value   *[]int32
 | 
			
		||||
	changed bool
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func newInt32SliceValue(val []int32, p *[]int32) *int32SliceValue {
 | 
			
		||||
	isv := new(int32SliceValue)
 | 
			
		||||
	isv.value = p
 | 
			
		||||
	*isv.value = val
 | 
			
		||||
	return isv
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (s *int32SliceValue) Set(val string) error {
 | 
			
		||||
	ss := strings.Split(val, ",")
 | 
			
		||||
	out := make([]int32, len(ss))
 | 
			
		||||
	for i, d := range ss {
 | 
			
		||||
		var err error
 | 
			
		||||
		var temp64 int64
 | 
			
		||||
		temp64, err = strconv.ParseInt(d, 0, 32)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return err
 | 
			
		||||
		}
 | 
			
		||||
		out[i] = int32(temp64)
 | 
			
		||||
 | 
			
		||||
	}
 | 
			
		||||
	if !s.changed {
 | 
			
		||||
		*s.value = out
 | 
			
		||||
	} else {
 | 
			
		||||
		*s.value = append(*s.value, out...)
 | 
			
		||||
	}
 | 
			
		||||
	s.changed = true
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (s *int32SliceValue) Type() string {
 | 
			
		||||
	return "int32Slice"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (s *int32SliceValue) 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 (s *int32SliceValue) fromString(val string) (int32, error) {
 | 
			
		||||
	t64, err := strconv.ParseInt(val, 0, 32)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return 0, err
 | 
			
		||||
	}
 | 
			
		||||
	return int32(t64), nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (s *int32SliceValue) toString(val int32) string {
 | 
			
		||||
	return fmt.Sprintf("%d", val)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (s *int32SliceValue) Append(val string) error {
 | 
			
		||||
	i, err := s.fromString(val)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
	*s.value = append(*s.value, i)
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (s *int32SliceValue) Replace(val []string) error {
 | 
			
		||||
	out := make([]int32, len(val))
 | 
			
		||||
	for i, d := range val {
 | 
			
		||||
		var err error
 | 
			
		||||
		out[i], err = s.fromString(d)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return err
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	*s.value = out
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (s *int32SliceValue) GetSlice() []string {
 | 
			
		||||
	out := make([]string, len(*s.value))
 | 
			
		||||
	for i, d := range *s.value {
 | 
			
		||||
		out[i] = s.toString(d)
 | 
			
		||||
	}
 | 
			
		||||
	return out
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func int32SliceConv(val string) (interface{}, error) {
 | 
			
		||||
	val = strings.Trim(val, "[]")
 | 
			
		||||
	// Empty string would cause a slice with one (empty) entry
 | 
			
		||||
	if len(val) == 0 {
 | 
			
		||||
		return []int32{}, nil
 | 
			
		||||
	}
 | 
			
		||||
	ss := strings.Split(val, ",")
 | 
			
		||||
	out := make([]int32, len(ss))
 | 
			
		||||
	for i, d := range ss {
 | 
			
		||||
		var err error
 | 
			
		||||
		var temp64 int64
 | 
			
		||||
		temp64, err = strconv.ParseInt(d, 0, 32)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return nil, err
 | 
			
		||||
		}
 | 
			
		||||
		out[i] = int32(temp64)
 | 
			
		||||
 | 
			
		||||
	}
 | 
			
		||||
	return out, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// GetInt32Slice return the []int32 value of a flag with the given name
 | 
			
		||||
func (f *FlagSet) GetInt32Slice(name string) ([]int32, error) {
 | 
			
		||||
	val, err := f.getFlagType(name, "int32Slice", int32SliceConv)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return []int32{}, err
 | 
			
		||||
	}
 | 
			
		||||
	return val.([]int32), nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Int32SliceVar defines a int32Slice flag with specified name, default value, and usage string.
 | 
			
		||||
// The argument p points to a []int32 variable in which to store the value of the flag.
 | 
			
		||||
func (f *FlagSet) Int32SliceVar(p *[]int32, name string, value []int32, usage string) {
 | 
			
		||||
	f.VarP(newInt32SliceValue(value, p), name, "", usage)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Int32SliceVarP is like Int32SliceVar, but accepts a shorthand letter that can be used after a single dash.
 | 
			
		||||
func (f *FlagSet) Int32SliceVarP(p *[]int32, name, shorthand string, value []int32, usage string) {
 | 
			
		||||
	f.VarP(newInt32SliceValue(value, p), name, shorthand, usage)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Int32SliceVar defines a int32[] flag with specified name, default value, and usage string.
 | 
			
		||||
// The argument p points to a int32[] variable in which to store the value of the flag.
 | 
			
		||||
func Int32SliceVar(p *[]int32, name string, value []int32, usage string) {
 | 
			
		||||
	CommandLine.VarP(newInt32SliceValue(value, p), name, "", usage)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Int32SliceVarP is like Int32SliceVar, but accepts a shorthand letter that can be used after a single dash.
 | 
			
		||||
func Int32SliceVarP(p *[]int32, name, shorthand string, value []int32, usage string) {
 | 
			
		||||
	CommandLine.VarP(newInt32SliceValue(value, p), name, shorthand, usage)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Int32Slice defines a []int32 flag with specified name, default value, and usage string.
 | 
			
		||||
// The return value is the address of a []int32 variable that stores the value of the flag.
 | 
			
		||||
func (f *FlagSet) Int32Slice(name string, value []int32, usage string) *[]int32 {
 | 
			
		||||
	p := []int32{}
 | 
			
		||||
	f.Int32SliceVarP(&p, name, "", value, usage)
 | 
			
		||||
	return &p
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Int32SliceP is like Int32Slice, but accepts a shorthand letter that can be used after a single dash.
 | 
			
		||||
func (f *FlagSet) Int32SliceP(name, shorthand string, value []int32, usage string) *[]int32 {
 | 
			
		||||
	p := []int32{}
 | 
			
		||||
	f.Int32SliceVarP(&p, name, shorthand, value, usage)
 | 
			
		||||
	return &p
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Int32Slice defines a []int32 flag with specified name, default value, and usage string.
 | 
			
		||||
// The return value is the address of a []int32 variable that stores the value of the flag.
 | 
			
		||||
func Int32Slice(name string, value []int32, usage string) *[]int32 {
 | 
			
		||||
	return CommandLine.Int32SliceP(name, "", value, usage)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Int32SliceP is like Int32Slice, but accepts a shorthand letter that can be used after a single dash.
 | 
			
		||||
func Int32SliceP(name, shorthand string, value []int32, usage string) *[]int32 {
 | 
			
		||||
	return CommandLine.Int32SliceP(name, shorthand, value, usage)
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										166
									
								
								vendor/github.com/spf13/pflag/int64_slice.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										166
									
								
								vendor/github.com/spf13/pflag/int64_slice.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,166 @@
 | 
			
		||||
package pflag
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"strconv"
 | 
			
		||||
	"strings"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// -- int64Slice Value
 | 
			
		||||
type int64SliceValue struct {
 | 
			
		||||
	value   *[]int64
 | 
			
		||||
	changed bool
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func newInt64SliceValue(val []int64, p *[]int64) *int64SliceValue {
 | 
			
		||||
	isv := new(int64SliceValue)
 | 
			
		||||
	isv.value = p
 | 
			
		||||
	*isv.value = val
 | 
			
		||||
	return isv
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (s *int64SliceValue) Set(val string) error {
 | 
			
		||||
	ss := strings.Split(val, ",")
 | 
			
		||||
	out := make([]int64, len(ss))
 | 
			
		||||
	for i, d := range ss {
 | 
			
		||||
		var err error
 | 
			
		||||
		out[i], err = strconv.ParseInt(d, 0, 64)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return err
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
	}
 | 
			
		||||
	if !s.changed {
 | 
			
		||||
		*s.value = out
 | 
			
		||||
	} else {
 | 
			
		||||
		*s.value = append(*s.value, out...)
 | 
			
		||||
	}
 | 
			
		||||
	s.changed = true
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (s *int64SliceValue) Type() string {
 | 
			
		||||
	return "int64Slice"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (s *int64SliceValue) 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 (s *int64SliceValue) fromString(val string) (int64, error) {
 | 
			
		||||
	return strconv.ParseInt(val, 0, 64)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (s *int64SliceValue) toString(val int64) string {
 | 
			
		||||
	return fmt.Sprintf("%d", val)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (s *int64SliceValue) Append(val string) error {
 | 
			
		||||
	i, err := s.fromString(val)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
	*s.value = append(*s.value, i)
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (s *int64SliceValue) Replace(val []string) error {
 | 
			
		||||
	out := make([]int64, len(val))
 | 
			
		||||
	for i, d := range val {
 | 
			
		||||
		var err error
 | 
			
		||||
		out[i], err = s.fromString(d)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return err
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	*s.value = out
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (s *int64SliceValue) GetSlice() []string {
 | 
			
		||||
	out := make([]string, len(*s.value))
 | 
			
		||||
	for i, d := range *s.value {
 | 
			
		||||
		out[i] = s.toString(d)
 | 
			
		||||
	}
 | 
			
		||||
	return out
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func int64SliceConv(val string) (interface{}, error) {
 | 
			
		||||
	val = strings.Trim(val, "[]")
 | 
			
		||||
	// Empty string would cause a slice with one (empty) entry
 | 
			
		||||
	if len(val) == 0 {
 | 
			
		||||
		return []int64{}, nil
 | 
			
		||||
	}
 | 
			
		||||
	ss := strings.Split(val, ",")
 | 
			
		||||
	out := make([]int64, len(ss))
 | 
			
		||||
	for i, d := range ss {
 | 
			
		||||
		var err error
 | 
			
		||||
		out[i], err = strconv.ParseInt(d, 0, 64)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return nil, err
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
	}
 | 
			
		||||
	return out, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// GetInt64Slice return the []int64 value of a flag with the given name
 | 
			
		||||
func (f *FlagSet) GetInt64Slice(name string) ([]int64, error) {
 | 
			
		||||
	val, err := f.getFlagType(name, "int64Slice", int64SliceConv)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return []int64{}, err
 | 
			
		||||
	}
 | 
			
		||||
	return val.([]int64), nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Int64SliceVar defines a int64Slice flag with specified name, default value, and usage string.
 | 
			
		||||
// The argument p points to a []int64 variable in which to store the value of the flag.
 | 
			
		||||
func (f *FlagSet) Int64SliceVar(p *[]int64, name string, value []int64, usage string) {
 | 
			
		||||
	f.VarP(newInt64SliceValue(value, p), name, "", usage)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Int64SliceVarP is like Int64SliceVar, but accepts a shorthand letter that can be used after a single dash.
 | 
			
		||||
func (f *FlagSet) Int64SliceVarP(p *[]int64, name, shorthand string, value []int64, usage string) {
 | 
			
		||||
	f.VarP(newInt64SliceValue(value, p), name, shorthand, usage)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Int64SliceVar defines a int64[] flag with specified name, default value, and usage string.
 | 
			
		||||
// The argument p points to a int64[] variable in which to store the value of the flag.
 | 
			
		||||
func Int64SliceVar(p *[]int64, name string, value []int64, usage string) {
 | 
			
		||||
	CommandLine.VarP(newInt64SliceValue(value, p), name, "", usage)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Int64SliceVarP is like Int64SliceVar, but accepts a shorthand letter that can be used after a single dash.
 | 
			
		||||
func Int64SliceVarP(p *[]int64, name, shorthand string, value []int64, usage string) {
 | 
			
		||||
	CommandLine.VarP(newInt64SliceValue(value, p), name, shorthand, usage)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Int64Slice defines a []int64 flag with specified name, default value, and usage string.
 | 
			
		||||
// The return value is the address of a []int64 variable that stores the value of the flag.
 | 
			
		||||
func (f *FlagSet) Int64Slice(name string, value []int64, usage string) *[]int64 {
 | 
			
		||||
	p := []int64{}
 | 
			
		||||
	f.Int64SliceVarP(&p, name, "", value, usage)
 | 
			
		||||
	return &p
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Int64SliceP is like Int64Slice, but accepts a shorthand letter that can be used after a single dash.
 | 
			
		||||
func (f *FlagSet) Int64SliceP(name, shorthand string, value []int64, usage string) *[]int64 {
 | 
			
		||||
	p := []int64{}
 | 
			
		||||
	f.Int64SliceVarP(&p, name, shorthand, value, usage)
 | 
			
		||||
	return &p
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Int64Slice defines a []int64 flag with specified name, default value, and usage string.
 | 
			
		||||
// The return value is the address of a []int64 variable that stores the value of the flag.
 | 
			
		||||
func Int64Slice(name string, value []int64, usage string) *[]int64 {
 | 
			
		||||
	return CommandLine.Int64SliceP(name, "", value, usage)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Int64SliceP is like Int64Slice, but accepts a shorthand letter that can be used after a single dash.
 | 
			
		||||
func Int64SliceP(name, shorthand string, value []int64, usage string) *[]int64 {
 | 
			
		||||
	return CommandLine.Int64SliceP(name, shorthand, value, usage)
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										30
									
								
								vendor/github.com/spf13/pflag/int_slice.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										30
									
								
								vendor/github.com/spf13/pflag/int_slice.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -51,6 +51,36 @@ func (s *intSliceValue) String() string {
 | 
			
		||||
	return "[" + strings.Join(out, ",") + "]"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (s *intSliceValue) Append(val string) error {
 | 
			
		||||
	i, err := strconv.Atoi(val)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
	*s.value = append(*s.value, i)
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (s *intSliceValue) Replace(val []string) error {
 | 
			
		||||
	out := make([]int, len(val))
 | 
			
		||||
	for i, d := range val {
 | 
			
		||||
		var err error
 | 
			
		||||
		out[i], err = strconv.Atoi(d)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return err
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	*s.value = out
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (s *intSliceValue) GetSlice() []string {
 | 
			
		||||
	out := make([]string, len(*s.value))
 | 
			
		||||
	for i, d := range *s.value {
 | 
			
		||||
		out[i] = strconv.Itoa(d)
 | 
			
		||||
	}
 | 
			
		||||
	return out
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func intSliceConv(val string) (interface{}, error) {
 | 
			
		||||
	val = strings.Trim(val, "[]")
 | 
			
		||||
	// Empty string would cause a slice with one (empty) entry
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										40
									
								
								vendor/github.com/spf13/pflag/ip_slice.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										40
									
								
								vendor/github.com/spf13/pflag/ip_slice.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -72,9 +72,47 @@ func (s *ipSliceValue) String() string {
 | 
			
		||||
	return "[" + out + "]"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (s *ipSliceValue) fromString(val string) (net.IP, error) {
 | 
			
		||||
	return net.ParseIP(strings.TrimSpace(val)), nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (s *ipSliceValue) toString(val net.IP) string {
 | 
			
		||||
	return val.String()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (s *ipSliceValue) Append(val string) error {
 | 
			
		||||
	i, err := s.fromString(val)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
	*s.value = append(*s.value, i)
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (s *ipSliceValue) Replace(val []string) error {
 | 
			
		||||
	out := make([]net.IP, len(val))
 | 
			
		||||
	for i, d := range val {
 | 
			
		||||
		var err error
 | 
			
		||||
		out[i], err = s.fromString(d)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return err
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	*s.value = out
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (s *ipSliceValue) GetSlice() []string {
 | 
			
		||||
	out := make([]string, len(*s.value))
 | 
			
		||||
	for i, d := range *s.value {
 | 
			
		||||
		out[i] = s.toString(d)
 | 
			
		||||
	}
 | 
			
		||||
	return out
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func ipSliceConv(val string) (interface{}, error) {
 | 
			
		||||
	val = strings.Trim(val, "[]")
 | 
			
		||||
	// Emtpy string would cause a slice with one (empty) entry
 | 
			
		||||
	// Empty string would cause a slice with one (empty) entry
 | 
			
		||||
	if len(val) == 0 {
 | 
			
		||||
		return []net.IP{}, nil
 | 
			
		||||
	}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										26
									
								
								vendor/github.com/spf13/pflag/string_array.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										26
									
								
								vendor/github.com/spf13/pflag/string_array.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -23,6 +23,32 @@ func (s *stringArrayValue) Set(val string) error {
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (s *stringArrayValue) Append(val string) error {
 | 
			
		||||
	*s.value = append(*s.value, val)
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (s *stringArrayValue) Replace(val []string) error {
 | 
			
		||||
	out := make([]string, len(val))
 | 
			
		||||
	for i, d := range val {
 | 
			
		||||
		var err error
 | 
			
		||||
		out[i] = d
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return err
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	*s.value = out
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (s *stringArrayValue) GetSlice() []string {
 | 
			
		||||
	out := make([]string, len(*s.value))
 | 
			
		||||
	for i, d := range *s.value {
 | 
			
		||||
		out[i] = d
 | 
			
		||||
	}
 | 
			
		||||
	return out
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (s *stringArrayValue) Type() string {
 | 
			
		||||
	return "stringArray"
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										22
									
								
								vendor/github.com/spf13/pflag/string_slice.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										22
									
								
								vendor/github.com/spf13/pflag/string_slice.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -62,6 +62,20 @@ func (s *stringSliceValue) String() string {
 | 
			
		||||
	return "[" + str + "]"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (s *stringSliceValue) Append(val string) error {
 | 
			
		||||
	*s.value = append(*s.value, val)
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (s *stringSliceValue) Replace(val []string) error {
 | 
			
		||||
	*s.value = val
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (s *stringSliceValue) GetSlice() []string {
 | 
			
		||||
	return *s.value
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func stringSliceConv(sval string) (interface{}, error) {
 | 
			
		||||
	sval = sval[1 : len(sval)-1]
 | 
			
		||||
	// An empty string would cause a slice with one (empty) string
 | 
			
		||||
@@ -84,7 +98,7 @@ func (f *FlagSet) GetStringSlice(name string) ([]string, error) {
 | 
			
		||||
// The argument p points to a []string variable in which to store the value of the flag.
 | 
			
		||||
// Compared to StringArray flags, StringSlice flags take comma-separated value as arguments and split them accordingly.
 | 
			
		||||
// For example:
 | 
			
		||||
//   --ss="v1,v2" -ss="v3"
 | 
			
		||||
//   --ss="v1,v2" --ss="v3"
 | 
			
		||||
// will result in
 | 
			
		||||
//   []string{"v1", "v2", "v3"}
 | 
			
		||||
func (f *FlagSet) StringSliceVar(p *[]string, name string, value []string, usage string) {
 | 
			
		||||
@@ -100,7 +114,7 @@ func (f *FlagSet) StringSliceVarP(p *[]string, name, shorthand string, value []s
 | 
			
		||||
// The argument p points to a []string variable in which to store the value of the flag.
 | 
			
		||||
// Compared to StringArray flags, StringSlice flags take comma-separated value as arguments and split them accordingly.
 | 
			
		||||
// For example:
 | 
			
		||||
//   --ss="v1,v2" -ss="v3"
 | 
			
		||||
//   --ss="v1,v2" --ss="v3"
 | 
			
		||||
// will result in
 | 
			
		||||
//   []string{"v1", "v2", "v3"}
 | 
			
		||||
func StringSliceVar(p *[]string, name string, value []string, usage string) {
 | 
			
		||||
@@ -116,7 +130,7 @@ func StringSliceVarP(p *[]string, name, shorthand string, value []string, usage
 | 
			
		||||
// The return value is the address of a []string variable that stores the value of the flag.
 | 
			
		||||
// Compared to StringArray flags, StringSlice flags take comma-separated value as arguments and split them accordingly.
 | 
			
		||||
// For example:
 | 
			
		||||
//   --ss="v1,v2" -ss="v3"
 | 
			
		||||
//   --ss="v1,v2" --ss="v3"
 | 
			
		||||
// will result in
 | 
			
		||||
//   []string{"v1", "v2", "v3"}
 | 
			
		||||
func (f *FlagSet) StringSlice(name string, value []string, usage string) *[]string {
 | 
			
		||||
@@ -136,7 +150,7 @@ func (f *FlagSet) StringSliceP(name, shorthand string, value []string, usage str
 | 
			
		||||
// The return value is the address of a []string variable that stores the value of the flag.
 | 
			
		||||
// Compared to StringArray flags, StringSlice flags take comma-separated value as arguments and split them accordingly.
 | 
			
		||||
// For example:
 | 
			
		||||
//   --ss="v1,v2" -ss="v3"
 | 
			
		||||
//   --ss="v1,v2" --ss="v3"
 | 
			
		||||
// will result in
 | 
			
		||||
//   []string{"v1", "v2", "v3"}
 | 
			
		||||
func StringSlice(name string, value []string, usage string) *[]string {
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										149
									
								
								vendor/github.com/spf13/pflag/string_to_int64.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										149
									
								
								vendor/github.com/spf13/pflag/string_to_int64.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,149 @@
 | 
			
		||||
package pflag
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"bytes"
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"strconv"
 | 
			
		||||
	"strings"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// -- stringToInt64 Value
 | 
			
		||||
type stringToInt64Value struct {
 | 
			
		||||
	value   *map[string]int64
 | 
			
		||||
	changed bool
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func newStringToInt64Value(val map[string]int64, p *map[string]int64) *stringToInt64Value {
 | 
			
		||||
	ssv := new(stringToInt64Value)
 | 
			
		||||
	ssv.value = p
 | 
			
		||||
	*ssv.value = val
 | 
			
		||||
	return ssv
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Format: a=1,b=2
 | 
			
		||||
func (s *stringToInt64Value) Set(val string) error {
 | 
			
		||||
	ss := strings.Split(val, ",")
 | 
			
		||||
	out := make(map[string]int64, len(ss))
 | 
			
		||||
	for _, pair := range ss {
 | 
			
		||||
		kv := strings.SplitN(pair, "=", 2)
 | 
			
		||||
		if len(kv) != 2 {
 | 
			
		||||
			return fmt.Errorf("%s must be formatted as key=value", pair)
 | 
			
		||||
		}
 | 
			
		||||
		var err error
 | 
			
		||||
		out[kv[0]], err = strconv.ParseInt(kv[1], 10, 64)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return err
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	if !s.changed {
 | 
			
		||||
		*s.value = out
 | 
			
		||||
	} else {
 | 
			
		||||
		for k, v := range out {
 | 
			
		||||
			(*s.value)[k] = v
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	s.changed = true
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (s *stringToInt64Value) Type() string {
 | 
			
		||||
	return "stringToInt64"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (s *stringToInt64Value) String() string {
 | 
			
		||||
	var buf bytes.Buffer
 | 
			
		||||
	i := 0
 | 
			
		||||
	for k, v := range *s.value {
 | 
			
		||||
		if i > 0 {
 | 
			
		||||
			buf.WriteRune(',')
 | 
			
		||||
		}
 | 
			
		||||
		buf.WriteString(k)
 | 
			
		||||
		buf.WriteRune('=')
 | 
			
		||||
		buf.WriteString(strconv.FormatInt(v, 10))
 | 
			
		||||
		i++
 | 
			
		||||
	}
 | 
			
		||||
	return "[" + buf.String() + "]"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func stringToInt64Conv(val string) (interface{}, error) {
 | 
			
		||||
	val = strings.Trim(val, "[]")
 | 
			
		||||
	// An empty string would cause an empty map
 | 
			
		||||
	if len(val) == 0 {
 | 
			
		||||
		return map[string]int64{}, nil
 | 
			
		||||
	}
 | 
			
		||||
	ss := strings.Split(val, ",")
 | 
			
		||||
	out := make(map[string]int64, len(ss))
 | 
			
		||||
	for _, pair := range ss {
 | 
			
		||||
		kv := strings.SplitN(pair, "=", 2)
 | 
			
		||||
		if len(kv) != 2 {
 | 
			
		||||
			return nil, fmt.Errorf("%s must be formatted as key=value", pair)
 | 
			
		||||
		}
 | 
			
		||||
		var err error
 | 
			
		||||
		out[kv[0]], err = strconv.ParseInt(kv[1], 10, 64)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return nil, err
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	return out, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// GetStringToInt64 return the map[string]int64 value of a flag with the given name
 | 
			
		||||
func (f *FlagSet) GetStringToInt64(name string) (map[string]int64, error) {
 | 
			
		||||
	val, err := f.getFlagType(name, "stringToInt64", stringToInt64Conv)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return map[string]int64{}, err
 | 
			
		||||
	}
 | 
			
		||||
	return val.(map[string]int64), nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// StringToInt64Var defines a string flag with specified name, default value, and usage string.
 | 
			
		||||
// The argument p point64s to a map[string]int64 variable in which to store the values of the multiple flags.
 | 
			
		||||
// The value of each argument will not try to be separated by comma
 | 
			
		||||
func (f *FlagSet) StringToInt64Var(p *map[string]int64, name string, value map[string]int64, usage string) {
 | 
			
		||||
	f.VarP(newStringToInt64Value(value, p), name, "", usage)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// StringToInt64VarP is like StringToInt64Var, but accepts a shorthand letter that can be used after a single dash.
 | 
			
		||||
func (f *FlagSet) StringToInt64VarP(p *map[string]int64, name, shorthand string, value map[string]int64, usage string) {
 | 
			
		||||
	f.VarP(newStringToInt64Value(value, p), name, shorthand, usage)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// StringToInt64Var defines a string flag with specified name, default value, and usage string.
 | 
			
		||||
// The argument p point64s to a map[string]int64 variable in which to store the value of the flag.
 | 
			
		||||
// The value of each argument will not try to be separated by comma
 | 
			
		||||
func StringToInt64Var(p *map[string]int64, name string, value map[string]int64, usage string) {
 | 
			
		||||
	CommandLine.VarP(newStringToInt64Value(value, p), name, "", usage)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// StringToInt64VarP is like StringToInt64Var, but accepts a shorthand letter that can be used after a single dash.
 | 
			
		||||
func StringToInt64VarP(p *map[string]int64, name, shorthand string, value map[string]int64, usage string) {
 | 
			
		||||
	CommandLine.VarP(newStringToInt64Value(value, p), name, shorthand, usage)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// StringToInt64 defines a string flag with specified name, default value, and usage string.
 | 
			
		||||
// The return value is the address of a map[string]int64 variable that stores the value of the flag.
 | 
			
		||||
// The value of each argument will not try to be separated by comma
 | 
			
		||||
func (f *FlagSet) StringToInt64(name string, value map[string]int64, usage string) *map[string]int64 {
 | 
			
		||||
	p := map[string]int64{}
 | 
			
		||||
	f.StringToInt64VarP(&p, name, "", value, usage)
 | 
			
		||||
	return &p
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// StringToInt64P is like StringToInt64, but accepts a shorthand letter that can be used after a single dash.
 | 
			
		||||
func (f *FlagSet) StringToInt64P(name, shorthand string, value map[string]int64, usage string) *map[string]int64 {
 | 
			
		||||
	p := map[string]int64{}
 | 
			
		||||
	f.StringToInt64VarP(&p, name, shorthand, value, usage)
 | 
			
		||||
	return &p
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// StringToInt64 defines a string flag with specified name, default value, and usage string.
 | 
			
		||||
// The return value is the address of a map[string]int64 variable that stores the value of the flag.
 | 
			
		||||
// The value of each argument will not try to be separated by comma
 | 
			
		||||
func StringToInt64(name string, value map[string]int64, usage string) *map[string]int64 {
 | 
			
		||||
	return CommandLine.StringToInt64P(name, "", value, usage)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// StringToInt64P is like StringToInt64, but accepts a shorthand letter that can be used after a single dash.
 | 
			
		||||
func StringToInt64P(name, shorthand string, value map[string]int64, usage string) *map[string]int64 {
 | 
			
		||||
	return CommandLine.StringToInt64P(name, shorthand, value, usage)
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										42
									
								
								vendor/github.com/spf13/pflag/uint_slice.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										42
									
								
								vendor/github.com/spf13/pflag/uint_slice.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -50,6 +50,48 @@ func (s *uintSliceValue) String() string {
 | 
			
		||||
	return "[" + strings.Join(out, ",") + "]"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (s *uintSliceValue) fromString(val string) (uint, error) {
 | 
			
		||||
	t, err := strconv.ParseUint(val, 10, 0)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return 0, err
 | 
			
		||||
	}
 | 
			
		||||
	return uint(t), nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (s *uintSliceValue) toString(val uint) string {
 | 
			
		||||
	return fmt.Sprintf("%d", val)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (s *uintSliceValue) Append(val string) error {
 | 
			
		||||
	i, err := s.fromString(val)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
	*s.value = append(*s.value, i)
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (s *uintSliceValue) Replace(val []string) error {
 | 
			
		||||
	out := make([]uint, len(val))
 | 
			
		||||
	for i, d := range val {
 | 
			
		||||
		var err error
 | 
			
		||||
		out[i], err = s.fromString(d)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return err
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	*s.value = out
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (s *uintSliceValue) GetSlice() []string {
 | 
			
		||||
	out := make([]string, len(*s.value))
 | 
			
		||||
	for i, d := range *s.value {
 | 
			
		||||
		out[i] = s.toString(d)
 | 
			
		||||
	}
 | 
			
		||||
	return out
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func uintSliceConv(val string) (interface{}, error) {
 | 
			
		||||
	val = strings.Trim(val, "[]")
 | 
			
		||||
	// Empty string would cause a slice with one (empty) entry
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user