5 Commits

Author SHA1 Message Date
9c5923bd4e fix mutex 2023-11-03 03:42:21 -07:00
5643d4d262 send back custom error 2023-11-03 03:18:37 -07:00
ee74c94359 add config collapse after reading in 2023-11-03 03:01:51 -07:00
e84645ccfa fix readme order 2023-11-03 02:25:19 -07:00
b2e7785e00 fix inverted negation 2023-11-03 02:24:06 -07:00
3 changed files with 10 additions and 4 deletions

View File

@@ -1,6 +1,6 @@
# JETY
JSON, ENV, YAML, TOML
JSON, ENV, TOML, YAML
This is a package for collapsing multiple configuration stores (env+json, env+yaml, env+toml) and writing them back to a centralized config.

View File

@@ -162,8 +162,6 @@ func (c *ConfigManager) SetEnvPrefix(prefix string) {
}
func (c *ConfigManager) ReadInConfig() error {
c.mutex.Lock()
defer c.mutex.Unlock()
// assume config = map[string]any
confFileData, err := readFile(c.configFileUsed, c.configType)
if err != nil {
@@ -174,12 +172,18 @@ func (c *ConfigManager) ReadInConfig() error {
lower := strings.ToLower(k)
conf[lower] = ConfigMap{Key: k, Value: v}
}
c.mutex.Lock()
c.mapConfig = conf
c.mutex.Unlock()
c.collapse()
return nil
}
func readFile(filename string, fileType configType) (map[string]any, error) {
fileData := make(map[string]any)
if _, err := os.Stat(filename); os.IsNotExist(err) {
return nil, ErrConfigFileNotFound
}
switch fileType {
case ConfigTypeTOML:
_, err := toml.DecodeFile(filename, &fileData)

View File

@@ -34,11 +34,13 @@ func (c *ConfigManager) SetDefault(key string, value any) {
lower := strings.ToLower(key)
c.defaultConfig[lower] = ConfigMap{Key: key, Value: value}
if _, ok := c.mapConfig[lower]; !ok {
if envVal, ok := c.envConfig[lower]; !ok {
if envVal, ok := c.envConfig[lower]; ok {
c.mapConfig[lower] = envVal
c.combinedConfig[lower] = envVal
} else {
c.combinedConfig[lower] = ConfigMap{Key: key, Value: value}
}
} else {
c.combinedConfig[lower] = c.mapConfig[lower]
}
}