@@ -15,18 +15,20 @@ import (
1515)
1616
1717var ENV * structure.ENV = & structure.ENV {
18- CONFIG_PATH : os .Getenv ("CONFIG_PATH" ),
19- DEFAULTS_PATH : os .Getenv ("DEFAULTS_PATH" ),
20- TOKENS_DIR : os .Getenv ("TOKENS_DIR" ),
21- FAVICON_PATH : os .Getenv ("FAVICON_PATH" ),
22- CONFIGS : map [string ]* structure.CONFIG {},
23- INSECURE : false ,
18+ CONFIG_PATH : os .Getenv ("CONFIG_PATH" ),
19+ DEFAULTS_PATH : os .Getenv ("DEFAULTS_PATH" ),
20+ TOKENS_DIR : os .Getenv ("TOKENS_DIR" ),
21+ FAVICON_PATH : os .Getenv ("FAVICON_PATH" ),
22+ INSECURE : false ,
23+
24+ CONFIGS : map [string ]* structure.CONFIG {},
2425}
2526
2627var DEFAULT * structure.CONFIG
2728
2829var defaultsConf * configutils.Config
2930var userConf * configutils.Config
31+ var envConf * configutils.Config
3032var tokenConf * configutils.Config
3133
3234var mainConf * configutils.Config
@@ -42,32 +44,38 @@ func Load() {
4244
4345 LoadTokens ()
4446
45- userConf .LoadEnv (normalizeEnv )
47+ NormalizeConfig ("" , defaultsConf )
48+ NormalizeConfig ("config" , userConf )
4649
47- NormalizeConfig (defaultsConf )
48- NormalizeConfig (userConf )
49-
50- NormalizeTokens ()
50+ envConf .LoadEnv (normalizeEnv )
5151
52+ NormalizeConfig ("env" , envConf )
53+
54+ userConf .MergeLayers (envConf .Layer )
55+
5256 mainConf .MergeLayers (defaultsConf .Layer , userConf .Layer )
5357
5458 mainConf .TemplateConfig ()
5559
56- InitTokens ()
60+ NormalizeTokens ()
61+
62+ InitConfig ()
5763
58- InitEnv ()
64+ InitTokens ()
5965
6066 log .Info ("Finished Loading Configuration" )
6167}
6268
6369func Log () {
64- log .Dev ("Loaded Config:" , mainConf .Layer .All ())
65- log .Dev ("Loaded Token Configs:" , tokenConf .Layer .All ())
70+ log .Dev ("Loaded Config:" , mainConf .Layer .Get ("" ))
71+ log .Dev ("Loaded Token Configs:" , tokenConf .Layer .Get ("" ))
72+ log .Dev ("Parsed Configs: " , ENV )
6673}
6774
6875func Clear () {
6976 defaultsConf = configutils .New ()
7077 userConf = configutils .New ()
78+ envConf = configutils .New ()
7179 tokenConf = configutils .New ()
7280 mainConf = configutils .New ()
7381}
@@ -85,11 +93,11 @@ func LowercaseKeys(config *configutils.Config) {
8593 config .Load (data , "" )
8694}
8795
88- func NormalizeConfig (config * configutils.Config ) {
89- Normalize (config , "" , & structure.CONFIG {})
96+ func NormalizeConfig (id string , config * configutils.Config ) {
97+ Normalize (id , config , "" , & structure.CONFIG {})
9098}
9199
92- func Normalize (config * configutils.Config , path string , structure any ) {
100+ func Normalize (id string , config * configutils.Config , path string , structure any ) {
93101 data := config .Layer .Get (path )
94102 old , ok := data .(map [string ]any )
95103
@@ -103,7 +111,7 @@ func Normalize(config *configutils.Config, path string, structure any) {
103111 tmpConf .Load (old , "" )
104112
105113 // Apply transforms to the new config
106- tmpConf .ApplyTransformFuncs (structure , "" , transformFuncs )
114+ tmpConf .ApplyTransformFuncs (id , structure , "" , transformFuncs )
107115
108116 // Lowercase actual config
109117 LowercaseKeys (config )
@@ -126,7 +134,7 @@ func InitReload() {
126134 tokenConf .OnReload (reload )
127135}
128136
129- func InitEnv () {
137+ func InitConfig () {
130138 var config structure.CONFIG
131139
132140 mainConf .Layer .Unmarshal ("" , & config )
@@ -161,3 +169,11 @@ func LoadConfig() {
161169 log .Error ("Could not Load Config " , ENV .CONFIG_PATH , ": " , err .Error ())
162170 }
163171}
172+
173+ func normalizeEnv (key string , value string ) (string , any ) {
174+ key = strings .ToLower (key )
175+ key = strings .ReplaceAll (key , "__" , "." )
176+ key = strings .ReplaceAll (key , "_" , "" )
177+
178+ return key , stringutils .ToType (value )
179+ }
0 commit comments