| ... | ... |
@@ -2588,7 +2588,7 @@ |
| 2588 | 2588 |
}, |
| 2589 | 2589 |
{
|
| 2590 | 2590 |
"ImportPath": "github.com/spf13/pflag", |
| 2591 |
- "Rev": "1560c1005499d61b80f865c04d39ca7505bf7f0b" |
|
| 2591 |
+ "Rev": "5ccb023bc27df288a957c5e994cd44fd19619465" |
|
| 2592 | 2592 |
}, |
| 2593 | 2593 |
{
|
| 2594 | 2594 |
"ImportPath": "github.com/stevvooe/resumable", |
| ... | ... |
@@ -1,9 +1,6 @@ |
| 1 | 1 |
package pflag |
| 2 | 2 |
|
| 3 |
-import ( |
|
| 4 |
- "fmt" |
|
| 5 |
- "strconv" |
|
| 6 |
-) |
|
| 3 |
+import "strconv" |
|
| 7 | 4 |
|
| 8 | 5 |
// optional interface to indicate boolean flags that can be |
| 9 | 6 |
// supplied without "=value" text |
| ... | ... |
@@ -30,7 +27,7 @@ func (b *boolValue) Type() string {
|
| 30 | 30 |
return "bool" |
| 31 | 31 |
} |
| 32 | 32 |
|
| 33 |
-func (b *boolValue) String() string { return fmt.Sprintf("%v", *b) }
|
|
| 33 |
+func (b *boolValue) String() string { return strconv.FormatBool(bool(*b)) }
|
|
| 34 | 34 |
|
| 35 | 35 |
func (b *boolValue) IsBoolFlag() bool { return true }
|
| 36 | 36 |
|
| ... | ... |
@@ -1,9 +1,6 @@ |
| 1 | 1 |
package pflag |
| 2 | 2 |
|
| 3 |
-import ( |
|
| 4 |
- "fmt" |
|
| 5 |
- "strconv" |
|
| 6 |
-) |
|
| 3 |
+import "strconv" |
|
| 7 | 4 |
|
| 8 | 5 |
// -- count Value |
| 9 | 6 |
type countValue int |
| ... | ... |
@@ -28,7 +25,7 @@ func (i *countValue) Type() string {
|
| 28 | 28 |
return "count" |
| 29 | 29 |
} |
| 30 | 30 |
|
| 31 |
-func (i *countValue) String() string { return fmt.Sprintf("%v", *i) }
|
|
| 31 |
+func (i *countValue) String() string { return strconv.Itoa(int(*i)) }
|
|
| 32 | 32 |
|
| 33 | 33 |
func countConv(sval string) (interface{}, error) {
|
| 34 | 34 |
i, err := strconv.Atoi(sval) |
| ... | ... |
@@ -416,23 +416,39 @@ func Set(name, value string) error {
|
| 416 | 416 |
// otherwise, the default values of all defined flags in the set. |
| 417 | 417 |
func (f *FlagSet) PrintDefaults() {
|
| 418 | 418 |
usages := f.FlagUsages() |
| 419 |
- fmt.Fprintf(f.out(), "%s", usages) |
|
| 420 |
-} |
|
| 421 |
- |
|
| 422 |
-// isZeroValue guesses whether the string represents the zero |
|
| 423 |
-// value for a flag. It is not accurate but in practice works OK. |
|
| 424 |
-func isZeroValue(value string) bool {
|
|
| 425 |
- switch value {
|
|
| 426 |
- case "false": |
|
| 427 |
- return true |
|
| 428 |
- case "<nil>": |
|
| 429 |
- return true |
|
| 430 |
- case "": |
|
| 431 |
- return true |
|
| 432 |
- case "0": |
|
| 433 |
- return true |
|
| 419 |
+ fmt.Fprint(f.out(), usages) |
|
| 420 |
+} |
|
| 421 |
+ |
|
| 422 |
+// defaultIsZeroValue returns true if the default value for this flag represents |
|
| 423 |
+// a zero value. |
|
| 424 |
+func (f *Flag) defaultIsZeroValue() bool {
|
|
| 425 |
+ switch f.Value.(type) {
|
|
| 426 |
+ case boolFlag: |
|
| 427 |
+ return f.DefValue == "false" |
|
| 428 |
+ case *durationValue: |
|
| 429 |
+ // Beginning in Go 1.7, duration zero values are "0s" |
|
| 430 |
+ return f.DefValue == "0" || f.DefValue == "0s" |
|
| 431 |
+ case *intValue, *int8Value, *int32Value, *int64Value, *uintValue, *uint8Value, *uint16Value, *uint32Value, *uint64Value, *countValue, *float32Value, *float64Value: |
|
| 432 |
+ return f.DefValue == "0" |
|
| 433 |
+ case *stringValue: |
|
| 434 |
+ return f.DefValue == "" |
|
| 435 |
+ case *ipValue, *ipMaskValue, *ipNetValue: |
|
| 436 |
+ return f.DefValue == "<nil>" |
|
| 437 |
+ case *intSliceValue, *stringSliceValue, *stringArrayValue: |
|
| 438 |
+ return f.DefValue == "[]" |
|
| 439 |
+ default: |
|
| 440 |
+ switch f.Value.String() {
|
|
| 441 |
+ case "false": |
|
| 442 |
+ return true |
|
| 443 |
+ case "<nil>": |
|
| 444 |
+ return true |
|
| 445 |
+ case "": |
|
| 446 |
+ return true |
|
| 447 |
+ case "0": |
|
| 448 |
+ return true |
|
| 449 |
+ } |
|
| 450 |
+ return false |
|
| 434 | 451 |
} |
| 435 |
- return false |
|
| 436 | 452 |
} |
| 437 | 453 |
|
| 438 | 454 |
// UnquoteUsage extracts a back-quoted name from the usage |
| ... | ... |
@@ -455,22 +471,19 @@ func UnquoteUsage(flag *Flag) (name string, usage string) {
|
| 455 | 455 |
break // Only one back quote; use type name. |
| 456 | 456 |
} |
| 457 | 457 |
} |
| 458 |
- // No explicit name, so use type if we can find one. |
|
| 459 |
- name = "value" |
|
| 460 |
- switch flag.Value.(type) {
|
|
| 461 |
- case boolFlag: |
|
| 458 |
+ |
|
| 459 |
+ name = flag.Value.Type() |
|
| 460 |
+ switch name {
|
|
| 461 |
+ case "bool": |
|
| 462 | 462 |
name = "" |
| 463 |
- case *durationValue: |
|
| 464 |
- name = "duration" |
|
| 465 |
- case *float64Value: |
|
| 463 |
+ case "float64": |
|
| 466 | 464 |
name = "float" |
| 467 |
- case *intValue, *int64Value: |
|
| 465 |
+ case "int64": |
|
| 468 | 466 |
name = "int" |
| 469 |
- case *stringValue: |
|
| 470 |
- name = "string" |
|
| 471 |
- case *uintValue, *uint64Value: |
|
| 467 |
+ case "uint64": |
|
| 472 | 468 |
name = "uint" |
| 473 | 469 |
} |
| 470 |
+ |
|
| 474 | 471 |
return |
| 475 | 472 |
} |
| 476 | 473 |
|
| ... | ... |
@@ -501,7 +514,7 @@ func (f *FlagSet) FlagUsages() string {
|
| 501 | 501 |
if len(flag.NoOptDefVal) > 0 {
|
| 502 | 502 |
switch flag.Value.Type() {
|
| 503 | 503 |
case "string": |
| 504 |
- line += fmt.Sprintf("[=%q]", flag.NoOptDefVal)
|
|
| 504 |
+ line += fmt.Sprintf("[=\"%s\"]", flag.NoOptDefVal)
|
|
| 505 | 505 |
case "bool": |
| 506 | 506 |
if flag.NoOptDefVal != "true" {
|
| 507 | 507 |
line += fmt.Sprintf("[=%s]", flag.NoOptDefVal)
|
| ... | ... |
@@ -519,9 +532,9 @@ func (f *FlagSet) FlagUsages() string {
|
| 519 | 519 |
} |
| 520 | 520 |
|
| 521 | 521 |
line += usage |
| 522 |
- if !isZeroValue(flag.DefValue) {
|
|
| 522 |
+ if !flag.defaultIsZeroValue() {
|
|
| 523 | 523 |
if flag.Value.Type() == "string" {
|
| 524 |
- line += fmt.Sprintf(" (default %q)", flag.DefValue)
|
|
| 524 |
+ line += fmt.Sprintf(" (default \"%s\")", flag.DefValue)
|
|
| 525 | 525 |
} else {
|
| 526 | 526 |
line += fmt.Sprintf(" (default %s)", flag.DefValue)
|
| 527 | 527 |
} |
| ... | ... |
@@ -1,9 +1,6 @@ |
| 1 | 1 |
package pflag |
| 2 | 2 |
|
| 3 |
-import ( |
|
| 4 |
- "fmt" |
|
| 5 |
- "strconv" |
|
| 6 |
-) |
|
| 3 |
+import "strconv" |
|
| 7 | 4 |
|
| 8 | 5 |
// -- float32 Value |
| 9 | 6 |
type float32Value float32 |
| ... | ... |
@@ -23,7 +20,7 @@ func (f *float32Value) Type() string {
|
| 23 | 23 |
return "float32" |
| 24 | 24 |
} |
| 25 | 25 |
|
| 26 |
-func (f *float32Value) String() string { return fmt.Sprintf("%v", *f) }
|
|
| 26 |
+func (f *float32Value) String() string { return strconv.FormatFloat(float64(*f), 'g', -1, 32) }
|
|
| 27 | 27 |
|
| 28 | 28 |
func float32Conv(sval string) (interface{}, error) {
|
| 29 | 29 |
v, err := strconv.ParseFloat(sval, 32) |
| ... | ... |
@@ -1,9 +1,6 @@ |
| 1 | 1 |
package pflag |
| 2 | 2 |
|
| 3 |
-import ( |
|
| 4 |
- "fmt" |
|
| 5 |
- "strconv" |
|
| 6 |
-) |
|
| 3 |
+import "strconv" |
|
| 7 | 4 |
|
| 8 | 5 |
// -- float64 Value |
| 9 | 6 |
type float64Value float64 |
| ... | ... |
@@ -23,7 +20,7 @@ func (f *float64Value) Type() string {
|
| 23 | 23 |
return "float64" |
| 24 | 24 |
} |
| 25 | 25 |
|
| 26 |
-func (f *float64Value) String() string { return fmt.Sprintf("%v", *f) }
|
|
| 26 |
+func (f *float64Value) String() string { return strconv.FormatFloat(float64(*f), 'g', -1, 64) }
|
|
| 27 | 27 |
|
| 28 | 28 |
func float64Conv(sval string) (interface{}, error) {
|
| 29 | 29 |
return strconv.ParseFloat(sval, 64) |
| ... | ... |
@@ -1,9 +1,6 @@ |
| 1 | 1 |
package pflag |
| 2 | 2 |
|
| 3 |
-import ( |
|
| 4 |
- "fmt" |
|
| 5 |
- "strconv" |
|
| 6 |
-) |
|
| 3 |
+import "strconv" |
|
| 7 | 4 |
|
| 8 | 5 |
// -- int Value |
| 9 | 6 |
type intValue int |
| ... | ... |
@@ -23,7 +20,7 @@ func (i *intValue) Type() string {
|
| 23 | 23 |
return "int" |
| 24 | 24 |
} |
| 25 | 25 |
|
| 26 |
-func (i *intValue) String() string { return fmt.Sprintf("%v", *i) }
|
|
| 26 |
+func (i *intValue) String() string { return strconv.Itoa(int(*i)) }
|
|
| 27 | 27 |
|
| 28 | 28 |
func intConv(sval string) (interface{}, error) {
|
| 29 | 29 |
return strconv.Atoi(sval) |
| ... | ... |
@@ -1,9 +1,6 @@ |
| 1 | 1 |
package pflag |
| 2 | 2 |
|
| 3 |
-import ( |
|
| 4 |
- "fmt" |
|
| 5 |
- "strconv" |
|
| 6 |
-) |
|
| 3 |
+import "strconv" |
|
| 7 | 4 |
|
| 8 | 5 |
// -- int32 Value |
| 9 | 6 |
type int32Value int32 |
| ... | ... |
@@ -23,7 +20,7 @@ func (i *int32Value) Type() string {
|
| 23 | 23 |
return "int32" |
| 24 | 24 |
} |
| 25 | 25 |
|
| 26 |
-func (i *int32Value) String() string { return fmt.Sprintf("%v", *i) }
|
|
| 26 |
+func (i *int32Value) String() string { return strconv.FormatInt(int64(*i), 10) }
|
|
| 27 | 27 |
|
| 28 | 28 |
func int32Conv(sval string) (interface{}, error) {
|
| 29 | 29 |
v, err := strconv.ParseInt(sval, 0, 32) |
| ... | ... |
@@ -1,9 +1,6 @@ |
| 1 | 1 |
package pflag |
| 2 | 2 |
|
| 3 |
-import ( |
|
| 4 |
- "fmt" |
|
| 5 |
- "strconv" |
|
| 6 |
-) |
|
| 3 |
+import "strconv" |
|
| 7 | 4 |
|
| 8 | 5 |
// -- int64 Value |
| 9 | 6 |
type int64Value int64 |
| ... | ... |
@@ -23,7 +20,7 @@ func (i *int64Value) Type() string {
|
| 23 | 23 |
return "int64" |
| 24 | 24 |
} |
| 25 | 25 |
|
| 26 |
-func (i *int64Value) String() string { return fmt.Sprintf("%v", *i) }
|
|
| 26 |
+func (i *int64Value) String() string { return strconv.FormatInt(int64(*i), 10) }
|
|
| 27 | 27 |
|
| 28 | 28 |
func int64Conv(sval string) (interface{}, error) {
|
| 29 | 29 |
return strconv.ParseInt(sval, 0, 64) |
| ... | ... |
@@ -1,9 +1,6 @@ |
| 1 | 1 |
package pflag |
| 2 | 2 |
|
| 3 |
-import ( |
|
| 4 |
- "fmt" |
|
| 5 |
- "strconv" |
|
| 6 |
-) |
|
| 3 |
+import "strconv" |
|
| 7 | 4 |
|
| 8 | 5 |
// -- int8 Value |
| 9 | 6 |
type int8Value int8 |
| ... | ... |
@@ -23,7 +20,7 @@ func (i *int8Value) Type() string {
|
| 23 | 23 |
return "int8" |
| 24 | 24 |
} |
| 25 | 25 |
|
| 26 |
-func (i *int8Value) String() string { return fmt.Sprintf("%v", *i) }
|
|
| 26 |
+func (i *int8Value) String() string { return strconv.FormatInt(int64(*i), 10) }
|
|
| 27 | 27 |
|
| 28 | 28 |
func int8Conv(sval string) (interface{}, error) {
|
| 29 | 29 |
v, err := strconv.ParseInt(sval, 0, 8) |
| ... | ... |
@@ -1,7 +1,5 @@ |
| 1 | 1 |
package pflag |
| 2 | 2 |
|
| 3 |
-import "fmt" |
|
| 4 |
- |
|
| 5 | 3 |
// -- string Value |
| 6 | 4 |
type stringValue string |
| 7 | 5 |
|
| ... | ... |
@@ -18,7 +16,7 @@ func (s *stringValue) Type() string {
|
| 18 | 18 |
return "string" |
| 19 | 19 |
} |
| 20 | 20 |
|
| 21 |
-func (s *stringValue) String() string { return fmt.Sprintf("%s", *s) }
|
|
| 21 |
+func (s *stringValue) String() string { return string(*s) }
|
|
| 22 | 22 |
|
| 23 | 23 |
func stringConv(sval string) (interface{}, error) {
|
| 24 | 24 |
return sval, nil |
| 25 | 25 |
new file mode 100644 |
| ... | ... |
@@ -0,0 +1,109 @@ |
| 0 |
+package pflag |
|
| 1 |
+ |
|
| 2 |
+import ( |
|
| 3 |
+ "fmt" |
|
| 4 |
+) |
|
| 5 |
+ |
|
| 6 |
+var _ = fmt.Fprint |
|
| 7 |
+ |
|
| 8 |
+// -- stringArray Value |
|
| 9 |
+type stringArrayValue struct {
|
|
| 10 |
+ value *[]string |
|
| 11 |
+ changed bool |
|
| 12 |
+} |
|
| 13 |
+ |
|
| 14 |
+func newStringArrayValue(val []string, p *[]string) *stringArrayValue {
|
|
| 15 |
+ ssv := new(stringArrayValue) |
|
| 16 |
+ ssv.value = p |
|
| 17 |
+ *ssv.value = val |
|
| 18 |
+ return ssv |
|
| 19 |
+} |
|
| 20 |
+ |
|
| 21 |
+func (s *stringArrayValue) Set(val string) error {
|
|
| 22 |
+ if !s.changed {
|
|
| 23 |
+ *s.value = []string{val}
|
|
| 24 |
+ s.changed = true |
|
| 25 |
+ } else {
|
|
| 26 |
+ *s.value = append(*s.value, val) |
|
| 27 |
+ } |
|
| 28 |
+ return nil |
|
| 29 |
+} |
|
| 30 |
+ |
|
| 31 |
+func (s *stringArrayValue) Type() string {
|
|
| 32 |
+ return "stringArray" |
|
| 33 |
+} |
|
| 34 |
+ |
|
| 35 |
+func (s *stringArrayValue) String() string {
|
|
| 36 |
+ str, _ := writeAsCSV(*s.value) |
|
| 37 |
+ return "[" + str + "]" |
|
| 38 |
+} |
|
| 39 |
+ |
|
| 40 |
+func stringArrayConv(sval string) (interface{}, error) {
|
|
| 41 |
+ sval = sval[1 : len(sval)-1] |
|
| 42 |
+ // An empty string would cause a array with one (empty) string |
|
| 43 |
+ if len(sval) == 0 {
|
|
| 44 |
+ return []string{}, nil
|
|
| 45 |
+ } |
|
| 46 |
+ return readAsCSV(sval) |
|
| 47 |
+} |
|
| 48 |
+ |
|
| 49 |
+// GetStringArray return the []string value of a flag with the given name |
|
| 50 |
+func (f *FlagSet) GetStringArray(name string) ([]string, error) {
|
|
| 51 |
+ val, err := f.getFlagType(name, "stringArray", stringArrayConv) |
|
| 52 |
+ if err != nil {
|
|
| 53 |
+ return []string{}, err
|
|
| 54 |
+ } |
|
| 55 |
+ return val.([]string), nil |
|
| 56 |
+} |
|
| 57 |
+ |
|
| 58 |
+// StringArrayVar defines a string flag with specified name, default value, and usage string. |
|
| 59 |
+// The argument p points to a []string variable in which to store the values of the multiple flags. |
|
| 60 |
+// The value of each argument will not try to be separated by comma |
|
| 61 |
+func (f *FlagSet) StringArrayVar(p *[]string, name string, value []string, usage string) {
|
|
| 62 |
+ f.VarP(newStringArrayValue(value, p), name, "", usage) |
|
| 63 |
+} |
|
| 64 |
+ |
|
| 65 |
+// StringArrayVarP is like StringArrayVar, but accepts a shorthand letter that can be used after a single dash. |
|
| 66 |
+func (f *FlagSet) StringArrayVarP(p *[]string, name, shorthand string, value []string, usage string) {
|
|
| 67 |
+ f.VarP(newStringArrayValue(value, p), name, shorthand, usage) |
|
| 68 |
+} |
|
| 69 |
+ |
|
| 70 |
+// StringArrayVar defines a string flag with specified name, default value, and usage string. |
|
| 71 |
+// The argument p points to a []string variable in which to store the value of the flag. |
|
| 72 |
+// The value of each argument will not try to be separated by comma |
|
| 73 |
+func StringArrayVar(p *[]string, name string, value []string, usage string) {
|
|
| 74 |
+ CommandLine.VarP(newStringArrayValue(value, p), name, "", usage) |
|
| 75 |
+} |
|
| 76 |
+ |
|
| 77 |
+// StringArrayVarP is like StringArrayVar, but accepts a shorthand letter that can be used after a single dash. |
|
| 78 |
+func StringArrayVarP(p *[]string, name, shorthand string, value []string, usage string) {
|
|
| 79 |
+ CommandLine.VarP(newStringArrayValue(value, p), name, shorthand, usage) |
|
| 80 |
+} |
|
| 81 |
+ |
|
| 82 |
+// StringArray defines a string flag with specified name, default value, and usage string. |
|
| 83 |
+// The return value is the address of a []string variable that stores the value of the flag. |
|
| 84 |
+// The value of each argument will not try to be separated by comma |
|
| 85 |
+func (f *FlagSet) StringArray(name string, value []string, usage string) *[]string {
|
|
| 86 |
+ p := []string{}
|
|
| 87 |
+ f.StringArrayVarP(&p, name, "", value, usage) |
|
| 88 |
+ return &p |
|
| 89 |
+} |
|
| 90 |
+ |
|
| 91 |
+// StringArrayP is like StringArray, but accepts a shorthand letter that can be used after a single dash. |
|
| 92 |
+func (f *FlagSet) StringArrayP(name, shorthand string, value []string, usage string) *[]string {
|
|
| 93 |
+ p := []string{}
|
|
| 94 |
+ f.StringArrayVarP(&p, name, shorthand, value, usage) |
|
| 95 |
+ return &p |
|
| 96 |
+} |
|
| 97 |
+ |
|
| 98 |
+// StringArray defines a string flag with specified name, default value, and usage string. |
|
| 99 |
+// The return value is the address of a []string variable that stores the value of the flag. |
|
| 100 |
+// The value of each argument will not try to be separated by comma |
|
| 101 |
+func StringArray(name string, value []string, usage string) *[]string {
|
|
| 102 |
+ return CommandLine.StringArrayP(name, "", value, usage) |
|
| 103 |
+} |
|
| 104 |
+ |
|
| 105 |
+// StringArrayP is like StringArray, but accepts a shorthand letter that can be used after a single dash. |
|
| 106 |
+func StringArrayP(name, shorthand string, value []string, usage string) *[]string {
|
|
| 107 |
+ return CommandLine.StringArrayP(name, shorthand, value, usage) |
|
| 108 |
+} |
| ... | ... |
@@ -1,6 +1,7 @@ |
| 1 | 1 |
package pflag |
| 2 | 2 |
|
| 3 | 3 |
import ( |
| 4 |
+ "bytes" |
|
| 4 | 5 |
"encoding/csv" |
| 5 | 6 |
"fmt" |
| 6 | 7 |
"strings" |
| ... | ... |
@@ -21,10 +22,28 @@ func newStringSliceValue(val []string, p *[]string) *stringSliceValue {
|
| 21 | 21 |
return ssv |
| 22 | 22 |
} |
| 23 | 23 |
|
| 24 |
-func (s *stringSliceValue) Set(val string) error {
|
|
| 24 |
+func readAsCSV(val string) ([]string, error) {
|
|
| 25 |
+ if val == "" {
|
|
| 26 |
+ return []string{}, nil
|
|
| 27 |
+ } |
|
| 25 | 28 |
stringReader := strings.NewReader(val) |
| 26 | 29 |
csvReader := csv.NewReader(stringReader) |
| 27 |
- v, err := csvReader.Read() |
|
| 30 |
+ return csvReader.Read() |
|
| 31 |
+} |
|
| 32 |
+ |
|
| 33 |
+func writeAsCSV(vals []string) (string, error) {
|
|
| 34 |
+ b := &bytes.Buffer{}
|
|
| 35 |
+ w := csv.NewWriter(b) |
|
| 36 |
+ err := w.Write(vals) |
|
| 37 |
+ if err != nil {
|
|
| 38 |
+ return "", err |
|
| 39 |
+ } |
|
| 40 |
+ w.Flush() |
|
| 41 |
+ return strings.TrimSuffix(b.String(), fmt.Sprintln()), nil |
|
| 42 |
+} |
|
| 43 |
+ |
|
| 44 |
+func (s *stringSliceValue) Set(val string) error {
|
|
| 45 |
+ v, err := readAsCSV(val) |
|
| 28 | 46 |
if err != nil {
|
| 29 | 47 |
return err |
| 30 | 48 |
} |
| ... | ... |
@@ -41,16 +60,18 @@ func (s *stringSliceValue) Type() string {
|
| 41 | 41 |
return "stringSlice" |
| 42 | 42 |
} |
| 43 | 43 |
|
| 44 |
-func (s *stringSliceValue) String() string { return "[" + strings.Join(*s.value, ",") + "]" }
|
|
| 44 |
+func (s *stringSliceValue) String() string {
|
|
| 45 |
+ str, _ := writeAsCSV(*s.value) |
|
| 46 |
+ return "[" + str + "]" |
|
| 47 |
+} |
|
| 45 | 48 |
|
| 46 | 49 |
func stringSliceConv(sval string) (interface{}, error) {
|
| 47 |
- sval = strings.Trim(sval, "[]") |
|
| 50 |
+ sval = sval[1 : len(sval)-1] |
|
| 48 | 51 |
// An empty string would cause a slice with one (empty) string |
| 49 | 52 |
if len(sval) == 0 {
|
| 50 | 53 |
return []string{}, nil
|
| 51 | 54 |
} |
| 52 |
- v := strings.Split(sval, ",") |
|
| 53 |
- return v, nil |
|
| 55 |
+ return readAsCSV(sval) |
|
| 54 | 56 |
} |
| 55 | 57 |
|
| 56 | 58 |
// GetStringSlice return the []string value of a flag with the given name |
| ... | ... |
@@ -1,9 +1,6 @@ |
| 1 | 1 |
package pflag |
| 2 | 2 |
|
| 3 |
-import ( |
|
| 4 |
- "fmt" |
|
| 5 |
- "strconv" |
|
| 6 |
-) |
|
| 3 |
+import "strconv" |
|
| 7 | 4 |
|
| 8 | 5 |
// -- uint Value |
| 9 | 6 |
type uintValue uint |
| ... | ... |
@@ -23,7 +20,7 @@ func (i *uintValue) Type() string {
|
| 23 | 23 |
return "uint" |
| 24 | 24 |
} |
| 25 | 25 |
|
| 26 |
-func (i *uintValue) String() string { return fmt.Sprintf("%v", *i) }
|
|
| 26 |
+func (i *uintValue) String() string { return strconv.FormatUint(uint64(*i), 10) }
|
|
| 27 | 27 |
|
| 28 | 28 |
func uintConv(sval string) (interface{}, error) {
|
| 29 | 29 |
v, err := strconv.ParseUint(sval, 0, 0) |
| ... | ... |
@@ -1,9 +1,6 @@ |
| 1 | 1 |
package pflag |
| 2 | 2 |
|
| 3 |
-import ( |
|
| 4 |
- "fmt" |
|
| 5 |
- "strconv" |
|
| 6 |
-) |
|
| 3 |
+import "strconv" |
|
| 7 | 4 |
|
| 8 | 5 |
// -- uint16 value |
| 9 | 6 |
type uint16Value uint16 |
| ... | ... |
@@ -12,7 +9,7 @@ func newUint16Value(val uint16, p *uint16) *uint16Value {
|
| 12 | 12 |
*p = val |
| 13 | 13 |
return (*uint16Value)(p) |
| 14 | 14 |
} |
| 15 |
-func (i *uint16Value) String() string { return fmt.Sprintf("%d", *i) }
|
|
| 15 |
+ |
|
| 16 | 16 |
func (i *uint16Value) Set(s string) error {
|
| 17 | 17 |
v, err := strconv.ParseUint(s, 0, 16) |
| 18 | 18 |
*i = uint16Value(v) |
| ... | ... |
@@ -23,6 +20,8 @@ func (i *uint16Value) Type() string {
|
| 23 | 23 |
return "uint16" |
| 24 | 24 |
} |
| 25 | 25 |
|
| 26 |
+func (i *uint16Value) String() string { return strconv.FormatUint(uint64(*i), 10) }
|
|
| 27 |
+ |
|
| 26 | 28 |
func uint16Conv(sval string) (interface{}, error) {
|
| 27 | 29 |
v, err := strconv.ParseUint(sval, 0, 16) |
| 28 | 30 |
if err != nil {
|
| ... | ... |
@@ -1,18 +1,15 @@ |
| 1 | 1 |
package pflag |
| 2 | 2 |
|
| 3 |
-import ( |
|
| 4 |
- "fmt" |
|
| 5 |
- "strconv" |
|
| 6 |
-) |
|
| 3 |
+import "strconv" |
|
| 7 | 4 |
|
| 8 |
-// -- uint16 value |
|
| 5 |
+// -- uint32 value |
|
| 9 | 6 |
type uint32Value uint32 |
| 10 | 7 |
|
| 11 | 8 |
func newUint32Value(val uint32, p *uint32) *uint32Value {
|
| 12 | 9 |
*p = val |
| 13 | 10 |
return (*uint32Value)(p) |
| 14 | 11 |
} |
| 15 |
-func (i *uint32Value) String() string { return fmt.Sprintf("%d", *i) }
|
|
| 12 |
+ |
|
| 16 | 13 |
func (i *uint32Value) Set(s string) error {
|
| 17 | 14 |
v, err := strconv.ParseUint(s, 0, 32) |
| 18 | 15 |
*i = uint32Value(v) |
| ... | ... |
@@ -23,6 +20,8 @@ func (i *uint32Value) Type() string {
|
| 23 | 23 |
return "uint32" |
| 24 | 24 |
} |
| 25 | 25 |
|
| 26 |
+func (i *uint32Value) String() string { return strconv.FormatUint(uint64(*i), 10) }
|
|
| 27 |
+ |
|
| 26 | 28 |
func uint32Conv(sval string) (interface{}, error) {
|
| 27 | 29 |
v, err := strconv.ParseUint(sval, 0, 32) |
| 28 | 30 |
if err != nil {
|
| ... | ... |
@@ -1,9 +1,6 @@ |
| 1 | 1 |
package pflag |
| 2 | 2 |
|
| 3 |
-import ( |
|
| 4 |
- "fmt" |
|
| 5 |
- "strconv" |
|
| 6 |
-) |
|
| 3 |
+import "strconv" |
|
| 7 | 4 |
|
| 8 | 5 |
// -- uint64 Value |
| 9 | 6 |
type uint64Value uint64 |
| ... | ... |
@@ -23,7 +20,7 @@ func (i *uint64Value) Type() string {
|
| 23 | 23 |
return "uint64" |
| 24 | 24 |
} |
| 25 | 25 |
|
| 26 |
-func (i *uint64Value) String() string { return fmt.Sprintf("%v", *i) }
|
|
| 26 |
+func (i *uint64Value) String() string { return strconv.FormatUint(uint64(*i), 10) }
|
|
| 27 | 27 |
|
| 28 | 28 |
func uint64Conv(sval string) (interface{}, error) {
|
| 29 | 29 |
v, err := strconv.ParseUint(sval, 0, 64) |
| ... | ... |
@@ -1,9 +1,6 @@ |
| 1 | 1 |
package pflag |
| 2 | 2 |
|
| 3 |
-import ( |
|
| 4 |
- "fmt" |
|
| 5 |
- "strconv" |
|
| 6 |
-) |
|
| 3 |
+import "strconv" |
|
| 7 | 4 |
|
| 8 | 5 |
// -- uint8 Value |
| 9 | 6 |
type uint8Value uint8 |
| ... | ... |
@@ -23,7 +20,7 @@ func (i *uint8Value) Type() string {
|
| 23 | 23 |
return "uint8" |
| 24 | 24 |
} |
| 25 | 25 |
|
| 26 |
-func (i *uint8Value) String() string { return fmt.Sprintf("%v", *i) }
|
|
| 26 |
+func (i *uint8Value) String() string { return strconv.FormatUint(uint64(*i), 10) }
|
|
| 27 | 27 |
|
| 28 | 28 |
func uint8Conv(sval string) (interface{}, error) {
|
| 29 | 29 |
v, err := strconv.ParseUint(sval, 0, 8) |