@@ -18,18 +18,22 @@ func truthiness(s string) bool {
18
18
}
19
19
20
20
type Settings struct {
21
- msg map [string ]string
22
- VarString map [string ]string
23
- VarInt map [string ]int
24
- VarBool map [string ]bool
25
- VarMap map [string ]map [string ][]string
26
- VarSlice map [string ][]string
27
- VarSliceSep map [string ]string
28
- Parsers map [string ]func (string ) string
29
- ParsersInt map [string ]func (int ) int
21
+ msg map [string ]string
22
+ VarString map [string ]string
23
+ VarInt map [string ]int
24
+ VarBool map [string ]bool
25
+ VarMap map [string ]map [string ][]string
26
+ VarSlice map [string ][]string
27
+ VarSliceSep map [string ]string
28
+ Parsers map [string ]func (string ) string
29
+ ParsersInt map [string ]func (int ) int
30
+ ContextualCasing bool
30
31
}
31
32
32
33
func (s * Settings ) Set (flagName , defaultVar , message string ) {
34
+ if s .ContextualCasing {
35
+ flagName = strings .ToLower (flagName )
36
+ }
33
37
s .msg [flagName ] = message
34
38
s .VarString [flagName ] = defaultVar
35
39
}
@@ -39,16 +43,25 @@ func (s *Settings) SetString(flagName, defaultVar, message string) {
39
43
}
40
44
41
45
func (s * Settings ) SetInt (flagName string , defaultVar int , message string ) {
46
+ if s .ContextualCasing {
47
+ flagName = strings .ToLower (flagName )
48
+ }
42
49
s .msg [flagName ] = message
43
50
s .VarInt [flagName ] = defaultVar
44
51
}
45
52
46
53
func (s * Settings ) SetBool (flagName string , defaultVar bool , message string ) {
54
+ if s .ContextualCasing {
55
+ flagName = strings .ToLower (flagName )
56
+ }
47
57
s .msg [flagName ] = message
48
58
s .VarBool [flagName ] = defaultVar
49
59
}
50
60
51
61
func (s * Settings ) SetMap (flagName string , defaultVar map [string ][]string , message string ) {
62
+ if s .ContextualCasing {
63
+ flagName = strings .ToLower (flagName )
64
+ }
52
65
s .msg [flagName ] = message
53
66
s .VarMap [flagName ] = defaultVar
54
67
}
@@ -57,40 +70,64 @@ func (s *Settings) SetSlice(flagName string, defaultVar []string, message string
57
70
if sep == "" {
58
71
sep = ","
59
72
}
73
+ if s .ContextualCasing {
74
+ flagName = strings .ToLower (flagName )
75
+ }
60
76
s .msg [flagName ] = message
61
77
s .VarSlice [flagName ] = defaultVar
62
78
s .VarSliceSep [flagName ] = sep
63
79
}
64
80
65
81
func (s * Settings ) SetParsed (flagName , defaultVar , message string , parserFunc func (string ) string ) {
82
+ if s .ContextualCasing {
83
+ flagName = strings .ToLower (flagName )
84
+ }
66
85
s .msg [flagName ] = message
67
86
s .VarString [flagName ] = defaultVar
68
87
s .Parsers [flagName ] = parserFunc
69
88
}
70
89
71
90
func (s * Settings ) SetParsedInt (flagName , defaultVar , message string , parserFunc func (int ) int ) {
91
+ if s .ContextualCasing {
92
+ flagName = strings .ToLower (flagName )
93
+ }
72
94
s .msg [flagName ] = message
73
95
s .VarString [flagName ] = defaultVar
74
96
s .ParsersInt [flagName ] = parserFunc
75
97
}
76
98
77
99
func (s Settings ) Get (flagName string ) string {
100
+ if s .ContextualCasing {
101
+ flagName = strings .ToLower (flagName )
102
+ }
78
103
return s .VarString [flagName ]
79
104
}
80
105
81
106
func (s Settings ) GetInt (flagName string ) int {
107
+ if s .ContextualCasing {
108
+ flagName = strings .ToLower (flagName )
109
+ }
82
110
return s .VarInt [flagName ]
83
111
}
84
112
85
113
func (s Settings ) GetBool (flagName string ) bool {
114
+ if s .ContextualCasing {
115
+ flagName = strings .ToLower (flagName )
116
+ }
86
117
return s .VarBool [flagName ]
87
118
}
88
119
89
120
func (s Settings ) GetMap (flagName string ) map [string ][]string {
121
+ if s .ContextualCasing {
122
+ flagName = strings .ToLower (flagName )
123
+ }
90
124
return s .VarMap [flagName ]
91
125
}
92
126
93
127
func (s Settings ) GetSlice (flagName string ) []string {
128
+ if s .ContextualCasing {
129
+ flagName = strings .ToLower (flagName )
130
+ }
94
131
return s .VarSlice [flagName ]
95
132
}
96
133
@@ -149,35 +186,54 @@ func (s *Settings) HandleCMDLineInput() {
149
186
}
150
187
151
188
func (s * Settings ) HandleOSInput () {
152
-
153
189
for key := range s .VarString {
154
- varEnv , found := os .LookupEnv (key )
190
+ lookupKey := key
191
+ if s .ContextualCasing {
192
+ lookupKey = strings .ToUpper (key )
193
+ }
194
+ varEnv , found := os .LookupEnv (lookupKey )
155
195
if found {
156
196
s .VarString [key ] = varEnv
157
197
}
158
198
}
159
199
for key := range s .VarInt {
160
- varEnv , found := os .LookupEnv (key )
200
+ lookupKey := key
201
+ if s .ContextualCasing {
202
+ lookupKey = strings .ToUpper (key )
203
+ }
204
+ varEnv , found := os .LookupEnv (lookupKey )
161
205
if found {
162
206
if num , err := strconv .Atoi (varEnv ); err == nil {
163
207
s .VarInt [key ] = num
164
208
}
165
209
}
166
210
}
167
211
for key := range s .VarBool {
168
- varEnv , found := os .LookupEnv (key )
212
+ lookupKey := key
213
+ if s .ContextualCasing {
214
+ lookupKey = strings .ToUpper (key )
215
+ }
216
+ varEnv , found := os .LookupEnv (lookupKey )
169
217
if found {
170
218
s .VarBool [key ] = truthiness (varEnv )
171
219
}
172
220
}
173
221
for key := range s .VarMap {
174
- varEnv , found := os .LookupEnv (key )
222
+ lookupKey := key
223
+ if s .ContextualCasing {
224
+ lookupKey = strings .ToUpper (key )
225
+ }
226
+ varEnv , found := os .LookupEnv (lookupKey )
175
227
if found {
176
228
s .VarMap [key ] = ParseLineToMap (varEnv )
177
229
}
178
230
}
179
231
for key := range s .VarSlice {
180
- varEnv , found := os .LookupEnv (key )
232
+ lookupKey := key
233
+ if s .ContextualCasing {
234
+ lookupKey = strings .ToUpper (key )
235
+ }
236
+ varEnv , found := os .LookupEnv (lookupKey )
181
237
if found {
182
238
s .VarSlice [key ] = strings .Split (varEnv , s .VarSliceSep [key ])
183
239
}
@@ -222,7 +278,7 @@ func (s *Settings) LoadStruct(cfg interface{}) {
222
278
for i := 0 ; i < value .Len (); i ++ {
223
279
slice [i ] = value .Index (i ).String ()
224
280
}
225
- s .SetSlice (name , slice , help , s .VarSliceSep [name ])
281
+ s .SetSlice (name , slice , help , s .VarSliceSep [strings . ToLower ( name ) ])
226
282
}
227
283
case reflect .Map :
228
284
if value .Type ().Key ().Kind () == reflect .String &&
0 commit comments