load env into cm

This commit is contained in:
2023-11-02 00:43:01 -07:00
parent 2c27fa61dc
commit 1a964b3d13

30
env.go
View File

@@ -3,6 +3,8 @@ package config
import ( import (
"errors" "errors"
"fmt" "fmt"
"os"
"strings"
"time" "time"
) )
@@ -17,23 +19,35 @@ const (
type ConfigManager struct { type ConfigManager struct {
configFileUsed string configFileUsed string
configType ConfigType configType ConfigType
autoEnvEnabled bool
envPrefix string envPrefix string
mapConfig map[string]any mapConfig map[string]any
defaultConfig map[string]any defaultConfig map[string]any
envConfig map[string]string
} }
var ( var (
ErrConfigFileNotFound = errors.New("config File Not Found") ErrConfigFileNotFound = errors.New("config File Not Found")
defaultConfigManager = NewConfigManager() defaultConfigManager = NewConfigManager(true)
) )
func NewConfigManager() *ConfigManager { func NewConfigManager(automaticEnv bool) *ConfigManager {
return &ConfigManager{} cm := ConfigManager{}
} cm.envConfig = make(map[string]string)
cm.mapConfig = make(map[string]any)
func AutoMaticEnv(enabled bool) { cm.defaultConfig = make(map[string]any)
defaultConfigManager.autoEnvEnabled = enabled cm.envPrefix = ""
envSet := os.Environ()
for _, env := range envSet {
kv := strings.Split(env, "=")
cm.envConfig[kv[0]] = kv[1]
lowerKey := strings.ToLower(kv[0])
if cm.envConfig[lowerKey] == "" {
// if the key is not set, set it as the lower case of the key
// but don't clobber any existing, more specific (already lowercase) value
cm.envConfig[lowerKey] = kv[1]
}
}
return &cm
} }
func (c *ConfigManager) ConfigFileUsed() string { func (c *ConfigManager) ConfigFileUsed() string {