@@ -18,18 +18,22 @@ func truthiness(s string) bool {
1818}
1919
2020type 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
3031}
3132
3233func (s * Settings ) Set (flagName , defaultVar , message string ) {
34+ if s .ContextualCasing {
35+ flagName = strings .ToLower (flagName )
36+ }
3337 s .msg [flagName ] = message
3438 s .VarString [flagName ] = defaultVar
3539}
@@ -39,16 +43,25 @@ func (s *Settings) SetString(flagName, defaultVar, message string) {
3943}
4044
4145func (s * Settings ) SetInt (flagName string , defaultVar int , message string ) {
46+ if s .ContextualCasing {
47+ flagName = strings .ToLower (flagName )
48+ }
4249 s .msg [flagName ] = message
4350 s .VarInt [flagName ] = defaultVar
4451}
4552
4653func (s * Settings ) SetBool (flagName string , defaultVar bool , message string ) {
54+ if s .ContextualCasing {
55+ flagName = strings .ToLower (flagName )
56+ }
4757 s .msg [flagName ] = message
4858 s .VarBool [flagName ] = defaultVar
4959}
5060
5161func (s * Settings ) SetMap (flagName string , defaultVar map [string ][]string , message string ) {
62+ if s .ContextualCasing {
63+ flagName = strings .ToLower (flagName )
64+ }
5265 s .msg [flagName ] = message
5366 s .VarMap [flagName ] = defaultVar
5467}
@@ -57,40 +70,64 @@ func (s *Settings) SetSlice(flagName string, defaultVar []string, message string
5770 if sep == "" {
5871 sep = ","
5972 }
73+ if s .ContextualCasing {
74+ flagName = strings .ToLower (flagName )
75+ }
6076 s .msg [flagName ] = message
6177 s .VarSlice [flagName ] = defaultVar
6278 s .VarSliceSep [flagName ] = sep
6379}
6480
6581func (s * Settings ) SetParsed (flagName , defaultVar , message string , parserFunc func (string ) string ) {
82+ if s .ContextualCasing {
83+ flagName = strings .ToLower (flagName )
84+ }
6685 s .msg [flagName ] = message
6786 s .VarString [flagName ] = defaultVar
6887 s .Parsers [flagName ] = parserFunc
6988}
7089
7190func (s * Settings ) SetParsedInt (flagName , defaultVar , message string , parserFunc func (int ) int ) {
91+ if s .ContextualCasing {
92+ flagName = strings .ToLower (flagName )
93+ }
7294 s .msg [flagName ] = message
7395 s .VarString [flagName ] = defaultVar
7496 s .ParsersInt [flagName ] = parserFunc
7597}
7698
7799func (s Settings ) Get (flagName string ) string {
100+ if s .ContextualCasing {
101+ flagName = strings .ToLower (flagName )
102+ }
78103 return s .VarString [flagName ]
79104}
80105
81106func (s Settings ) GetInt (flagName string ) int {
107+ if s .ContextualCasing {
108+ flagName = strings .ToLower (flagName )
109+ }
82110 return s .VarInt [flagName ]
83111}
84112
85113func (s Settings ) GetBool (flagName string ) bool {
114+ if s .ContextualCasing {
115+ flagName = strings .ToLower (flagName )
116+ }
86117 return s .VarBool [flagName ]
87118}
88119
89120func (s Settings ) GetMap (flagName string ) map [string ][]string {
121+ if s .ContextualCasing {
122+ flagName = strings .ToLower (flagName )
123+ }
90124 return s .VarMap [flagName ]
91125}
92126
93127func (s Settings ) GetSlice (flagName string ) []string {
128+ if s .ContextualCasing {
129+ flagName = strings .ToLower (flagName )
130+ }
94131 return s .VarSlice [flagName ]
95132}
96133
@@ -149,35 +186,54 @@ func (s *Settings) HandleCMDLineInput() {
149186}
150187
151188func (s * Settings ) HandleOSInput () {
152-
153189 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 )
155195 if found {
156196 s .VarString [key ] = varEnv
157197 }
158198 }
159199 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 )
161205 if found {
162206 if num , err := strconv .Atoi (varEnv ); err == nil {
163207 s .VarInt [key ] = num
164208 }
165209 }
166210 }
167211 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 )
169217 if found {
170218 s .VarBool [key ] = truthiness (varEnv )
171219 }
172220 }
173221 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 )
175227 if found {
176228 s .VarMap [key ] = ParseLineToMap (varEnv )
177229 }
178230 }
179231 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 )
181237 if found {
182238 s .VarSlice [key ] = strings .Split (varEnv , s .VarSliceSep [key ])
183239 }
@@ -222,7 +278,7 @@ func (s *Settings) LoadStruct(cfg interface{}) {
222278 for i := 0 ; i < value .Len (); i ++ {
223279 slice [i ] = value .Index (i ).String ()
224280 }
225- s .SetSlice (name , slice , help , s .VarSliceSep [name ])
281+ s .SetSlice (name , slice , help , s .VarSliceSep [strings . ToLower ( name ) ])
226282 }
227283 case reflect .Map :
228284 if value .Type ().Key ().Kind () == reflect .String &&
0 commit comments