-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathutil.go
158 lines (126 loc) · 2.73 KB
/
util.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
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
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
package goNixArgParser
import "strconv"
func getValue(source map[string][]string, key string) (value string, found bool) {
var values []string
values, found = source[key]
if found && len(values) > 0 {
value = values[0]
}
return
}
func getValues(source map[string][]string, key string) (values []string, found bool) {
values, found = source[key]
if found {
values = copys(values)
return values, true
}
return
}
func copys(input []string) []string {
if input == nil {
return nil
}
output := make([]string, len(input))
copy(output, input)
return output
}
func stringToSlice(input string) []string {
if len(input) == 0 {
return nil
}
return []string{input}
}
func toBool(input string) (bool, error) {
if len(input) == 0 {
return false, nil
}
return strconv.ParseBool(input)
}
func toBools(input []string) ([]bool, error) {
inputLen := len(input)
output := make([]bool, inputLen)
for i, l := 0, inputLen; i < l; i++ {
v, err := toBool(input[i])
if err != nil {
return nil, err
}
output[i] = v
}
return output, nil
}
func toInt(input string) (int, error) {
return strconv.Atoi(input)
}
func toInts(input []string) ([]int, error) {
inputLen := len(input)
output := make([]int, inputLen)
for i, l := 0, inputLen; i < l; i++ {
v, err := toInt(input[i])
if err != nil {
return nil, err
}
output[i] = v
}
return output, nil
}
func toInt64(input string) (int64, error) {
return strconv.ParseInt(input, 10, 64)
}
func toInt64s(input []string) ([]int64, error) {
inputLen := len(input)
output := make([]int64, inputLen)
for i, l := 0, inputLen; i < l; i++ {
v, err := toInt64(input[i])
if err != nil {
return nil, err
}
output[i] = v
}
return output, nil
}
func toUint64(input string) (uint64, error) {
return strconv.ParseUint(input, 10, 64)
}
func toUint64s(input []string) ([]uint64, error) {
inputLen := len(input)
output := make([]uint64, inputLen)
for i, l := 0, inputLen; i < l; i++ {
v, err := toUint64(input[i])
if err != nil {
return nil, err
}
output[i] = v
}
return output, nil
}
func toFloat64(input string) (float64, error) {
return strconv.ParseFloat(input, 64)
}
func toFloat64s(input []string) ([]float64, error) {
inputLen := len(input)
output := make([]float64, inputLen)
for i, l := 0, inputLen; i < l; i++ {
v, err := toFloat64(input[i])
if err != nil {
return nil, err
}
output[i] = v
}
return output, nil
}
func contains(collection []string, find string) bool {
for _, item := range collection {
if item == find {
return true
}
}
return false
}
func appendUnique(origins []string, items ...string) []string {
for _, item := range items {
if !contains(origins, item) {
origins = append(origins, item)
}
}
return origins
}