61 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			61 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| package envs
 | |
| 
 | |
| /*
 | |
| 	EnvMapper contains the environment variables as grouped by their basic type.
 | |
| 	If a variable's type cannot be determined, it's placed in Strings.
 | |
| 	If a variable's type is a list, it will be an []interface{} as each item may be a different variable type.
 | |
| 	It essentially is the same as EnvMap except with the types split out for convenience.
 | |
| */
 | |
| type EnvMapper struct {
 | |
| 	Booleans map[string]bool          `json:"bools"`
 | |
| 	Numbers  map[string]int           `json:"nums"`
 | |
| 	Strings  map[string]string        `json:"strings"`
 | |
| 	Lists    map[string][]interface{} `json:"lists"`
 | |
| }
 | |
| 
 | |
| // GetEnvMapper returns a pointer to a populated EnvMapper.
 | |
| func GetEnvMapper() (e *EnvMapper, err error) {
 | |
| 
 | |
| 	var em map[string]interface{}
 | |
| 	var env EnvMapper
 | |
| 
 | |
| 	env = EnvMapper{
 | |
| 		Booleans: nil,
 | |
| 		Numbers:  nil,
 | |
| 		Strings:  nil,
 | |
| 		Lists:    nil,
 | |
| 	}
 | |
| 
 | |
| 	for k, v := range em {
 | |
| 
 | |
| 		switch t := v.(type) {
 | |
| 		case bool:
 | |
| 			if env.Booleans == nil {
 | |
| 				env.Booleans = make(map[string]bool, 0)
 | |
| 			}
 | |
| 			env.Booleans[k] = t
 | |
| 			continue
 | |
| 		case int:
 | |
| 			if env.Numbers == nil {
 | |
| 				env.Numbers = make(map[string]int, 0)
 | |
| 			}
 | |
| 			env.Numbers[k] = t
 | |
| 			continue
 | |
| 		case []interface{}:
 | |
| 			if env.Lists == nil {
 | |
| 				env.Lists = make(map[string][]interface{}, 0)
 | |
| 			}
 | |
| 			env.Lists[k] = t
 | |
| 		case string: // the "default" since everything could probably be typeswitched to a string otherwise.
 | |
| 			if env.Strings == nil {
 | |
| 				env.Strings = make(map[string]string, 0)
 | |
| 			}
 | |
| 			env.Strings[k] = t
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	*e = env
 | |
| 
 | |
| 	return
 | |
| }
 |