diff --git a/config/conf_loader.go b/config/conf_loader.go index 9d1e1ee..5494e3d 100644 --- a/config/conf_loader.go +++ b/config/conf_loader.go @@ -26,12 +26,12 @@ import ( func GetConfLoader() *onion.Onion { logger := zerolog.New(os.Stdout).With().Timestamp().Logger() AppName := GetAppName() - EnvPrefix := strings.ToUpper(AppName[0:2] + AppName[3:]) + EnvPrefix := strings.ToUpper(AppName[0:2]+AppName[3:]) + "_" defaultConfigFile := "/etc/oc/" + AppName[3:] + ".json" localConfigFile := "./" + AppName[3:] + ".json" var configFile string var o *onion.Onion - l3 := onion.NewEnvLayerPrefix("_", EnvPrefix) + l3 := GetEnvVarLayer(EnvPrefix) l2, err := onion.NewFileLayer(localConfigFile, nil) if err == nil { logger.Info().Msg("Local config file found " + localConfigFile + ", overriding default file") @@ -54,3 +54,17 @@ func GetConfLoader() *onion.Onion { } return o } + +func GetEnvVarLayer(prefix string) onion.Layer { + envVars := make(map[string]interface{}) + + for _, e := range os.Environ() { + pair := strings.SplitN(e, "=", 2) + key := pair[0] + if strings.HasPrefix(key, prefix) { + envVars[strings.TrimPrefix(key, prefix)] = pair[1] + } + } + + return onion.NewMapLayer(envVars) +}