-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathargs.go
60 lines (49 loc) · 1.31 KB
/
args.go
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
package cli
type Args struct {
name string
help string
value value
env *string
}
func (a *Args) key() string {
return "<" + a.name + "...>"
}
func (a *Args) verify() error {
return a.value.verify()
}
// Env allows you to use an environment variable to set the value of the argument.
func (a *Args) Env(name string) *Args {
a.env = &name
return a
}
func (a *Args) Optional() *OptionalArgs {
return &OptionalArgs{a}
}
func (a *Args) Strings(target *[]string) *Strings {
*target = []string{}
value := &Strings{target, a.env, nil, false}
a.value = &stringsValue{key: a.key(), inner: value}
return value
}
func (a *Args) StringMap(target *map[string]string) *StringMap {
*target = map[string]string{}
value := &StringMap{target, a.env, nil, false}
a.value = &stringMapValue{key: "<key:value...>", inner: value}
return value
}
type OptionalArgs struct {
a *Args
}
func (a *OptionalArgs) key() string {
return "[<" + a.a.name + ">...]"
}
func (a *OptionalArgs) Strings(target *[]string) *Strings {
value := &Strings{target, a.a.env, nil, true}
a.a.value = &stringsValue{key: a.key(), inner: value}
return value
}
func (a *OptionalArgs) StringMap(target *map[string]string) *StringMap {
value := &StringMap{target, a.a.env, nil, true}
a.a.value = &stringMapValue{key: a.key(), inner: value}
return value
}