(yamlMap generic.Map, errs *[]error)
| 419 | } |
| 420 | |
| 421 | func envVarOrEmptyMap(yamlMap generic.Map, errs *[]error) *map[string]interface{} { |
| 422 | key := "env" |
| 423 | switch envVars := yamlMap.Get(key).(type) { |
| 424 | case nil: |
| 425 | aMap := make(map[string]interface{}, 0) |
| 426 | return &aMap |
| 427 | case map[string]interface{}: |
| 428 | yamlMap.Set(key, generic.NewMap(yamlMap.Get(key))) |
| 429 | return envVarOrEmptyMap(yamlMap, errs) |
| 430 | case map[interface{}]interface{}: |
| 431 | yamlMap.Set(key, generic.NewMap(yamlMap.Get(key))) |
| 432 | return envVarOrEmptyMap(yamlMap, errs) |
| 433 | case generic.Map: |
| 434 | merrs := validateEnvVars(envVars) |
| 435 | if merrs != nil { |
| 436 | *errs = append(*errs, merrs...) |
| 437 | return nil |
| 438 | } |
| 439 | |
| 440 | result := make(map[string]interface{}, envVars.Count()) |
| 441 | generic.Each(envVars, func(key, value interface{}) { |
| 442 | result[key.(string)] = interfaceToString(value) |
| 443 | }) |
| 444 | |
| 445 | return &result |
| 446 | default: |
| 447 | *errs = append(*errs, errors.New(T("Expected {{.Name}} to be a set of key => value, but it was a {{.Type}}.", |
| 448 | map[string]interface{}{"Name": key, "Type": envVars}))) |
| 449 | return nil |
| 450 | } |
| 451 | } |
| 452 | |
| 453 | func validateEnvVars(input generic.Map) (errs []error) { |
| 454 | generic.Each(input, func(key, value interface{}) { |
no test coverage detected