From 1de488859957e4c8782079f75df0963c6f6ce547 Mon Sep 17 00:00:00 2001 From: plm Date: Tue, 10 Dec 2024 14:01:47 +0100 Subject: [PATCH 1/2] Remove extra underscore character; it breaks the env var loading --- config/conf_loader.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/conf_loader.go b/config/conf_loader.go index 8397953..9d1e1ee 100644 --- a/config/conf_loader.go +++ b/config/conf_loader.go @@ -26,7 +26,7 @@ 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 From 21d08204b5ba5518f36c3c9c3b3cc4e57ca2fde9 Mon Sep 17 00:00:00 2001 From: plm Date: Mon, 16 Dec 2024 09:17:54 +0100 Subject: [PATCH 2/2] Fixing env based layer; not using onion builtin mechanism to preserve opencloud conf key/value format --- config/conf_loader.go | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) 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) +}