Uh oh!
There was an error while loading. Please reload this page.
forked from spf13/pflag
- Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathstring_array.go
More file actions
Latest commit
125 lines (107 loc) · 4.25 KB
/
Copy pathstring_array.go
File metadata and controls
125 lines (107 loc) · 4.25 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
package pflag
// -- stringArray Value
typestringArrayValuestruct {
value*[]string
changedbool
}
funcnewStringArrayValue(val []string, p*[]string) *stringArrayValue {
ssv:=new(stringArrayValue)
ssv.value=p
*ssv.value=val
returnssv
}
func (s*stringArrayValue) Set(valstring) error {
if!s.changed {
*s.value= []string{val}
s.changed=true
} else {
*s.value=append(*s.value, val)
}
returnnil
}
func (s*stringArrayValue) Append(valstring) error {
*s.value=append(*s.value, val)
returnnil
}
func (s*stringArrayValue) Replace(val []string) error {
out:=make([]string, len(val))
fori, d:=rangeval {
out[i] =d
}
*s.value=out
returnnil
}
func (s*stringArrayValue) GetSlice() []string {
out:=make([]string, len(*s.value))
fori, d:=range*s.value {
out[i] =d
}
returnout
}
func (s*stringArrayValue) Type() string {
return"stringArray"
}
func (s*stringArrayValue) String() string {
str, _:=writeAsCSV(*s.value)
return"["+str+"]"
}
funcstringArrayConv(svalstring) (interface{}, error) {
sval=sval[1 : len(sval)-1]
// An empty string would cause a array with one (empty) string
iflen(sval) ==0 {
return []string{}, nil
}
returnreadAsCSV(sval)
}
// GetStringArray return the []string value of a flag with the given name
func (f*FlagSet) GetStringArray(namestring) ([]string, error) {
val, err:=f.getFlagType(name, "stringArray", stringArrayConv)
iferr!=nil {
return []string{}, err
}
returnval.([]string), nil
}
// StringArrayVar defines a string flag with specified name, default value, and usage string.
// The argument p points to a []string variable in which to store the values of the multiple flags.
// The value of each argument will not try to be separated by comma. Use a StringSlice for that.
func (f*FlagSet) StringArrayVar(p*[]string, namestring, value []string, usagestring) {
f.VarP(newStringArrayValue(value, p), name, "", usage)
}
// StringArrayVarP is like StringArrayVar, but accepts a shorthand letter that can be used after a single dash.
func (f*FlagSet) StringArrayVarP(p*[]string, name, shorthandstring, value []string, usagestring) {
f.VarP(newStringArrayValue(value, p), name, shorthand, usage)
}
// StringArrayVar defines a string flag with specified name, default value, and usage string.
// The argument p points to a []string variable in which to store the value of the flag.
// The value of each argument will not try to be separated by comma. Use a StringSlice for that.
funcStringArrayVar(p*[]string, namestring, value []string, usagestring) {
CommandLine.VarP(newStringArrayValue(value, p), name, "", usage)
}
// StringArrayVarP is like StringArrayVar, but accepts a shorthand letter that can be used after a single dash.
funcStringArrayVarP(p*[]string, name, shorthandstring, value []string, usagestring) {
CommandLine.VarP(newStringArrayValue(value, p), name, shorthand, usage)
}
// StringArray defines a string flag with specified name, default value, and usage string.
// The return value is the address of a []string variable that stores the value of the flag.
// The value of each argument will not try to be separated by comma. Use a StringSlice for that.
func (f*FlagSet) StringArray(namestring, value []string, usagestring) *[]string {
p:= []string{}
f.StringArrayVarP(&p, name, "", value, usage)
return&p
}
// StringArrayP is like StringArray, but accepts a shorthand letter that can be used after a single dash.
func (f*FlagSet) StringArrayP(name, shorthandstring, value []string, usagestring) *[]string {
p:= []string{}
f.StringArrayVarP(&p, name, shorthand, value, usage)
return&p
}
// StringArray defines a string flag with specified name, default value, and usage string.
// The return value is the address of a []string variable that stores the value of the flag.
// The value of each argument will not try to be separated by comma. Use a StringSlice for that.
funcStringArray(namestring, value []string, usagestring) *[]string {
returnCommandLine.StringArrayP(name, "", value, usage)
}
// StringArrayP is like StringArray, but accepts a shorthand letter that can be used after a single dash.
funcStringArrayP(name, shorthandstring, value []string, usagestring) *[]string {
returnCommandLine.StringArrayP(name, shorthand, value, usage)
}