updated ezconf
This commit is contained in:
@@ -18,16 +18,16 @@ type EnvVar struct {
|
||||
|
||||
// ConfigLoader manages configuration loading from multiple sources
|
||||
type ConfigLoader struct {
|
||||
configFuncs map[string]ConfigFunc // Map of config names to ConfigFromEnv functions
|
||||
packagePaths []string // Paths to packages to parse for ENV comments
|
||||
groupNames map[string]string // Map of package paths to group names
|
||||
extraEnvVars []EnvVar // Additional environment variables to track
|
||||
envVars []EnvVar // All extracted environment variables
|
||||
configs map[string]interface{} // Loaded configurations
|
||||
configFuncs map[string]ConfigFunc // Map of config names to ConfigFromEnv functions
|
||||
packagePaths []string // Paths to packages to parse for ENV comments
|
||||
groupNames map[string]string // Map of package paths to group names
|
||||
extraEnvVars []EnvVar // Additional environment variables to track
|
||||
envVars []EnvVar // All extracted environment variables
|
||||
configs map[string]any // Loaded configurations
|
||||
}
|
||||
|
||||
// ConfigFunc is a function that loads configuration from environment variables
|
||||
type ConfigFunc func() (interface{}, error)
|
||||
type ConfigFunc func() (any, error)
|
||||
|
||||
// New creates a new ConfigLoader
|
||||
func New() *ConfigLoader {
|
||||
@@ -37,7 +37,7 @@ func New() *ConfigLoader {
|
||||
groupNames: make(map[string]string),
|
||||
extraEnvVars: make([]EnvVar, 0),
|
||||
envVars: make([]EnvVar, 0),
|
||||
configs: make(map[string]interface{}),
|
||||
configs: make(map[string]any),
|
||||
}
|
||||
}
|
||||
|
||||
@@ -72,8 +72,12 @@ func (cl *ConfigLoader) AddEnvVar(envVar EnvVar) {
|
||||
cl.extraEnvVars = append(cl.extraEnvVars, envVar)
|
||||
}
|
||||
|
||||
// Load loads all configurations and extracts environment variables
|
||||
func (cl *ConfigLoader) Load() error {
|
||||
// ParseEnvVars extracts environment variables from packages and extra vars
|
||||
// This can be called without having actual environment variables set
|
||||
func (cl *ConfigLoader) ParseEnvVars() error {
|
||||
// Clear existing env vars to prevent duplicates
|
||||
cl.envVars = make([]EnvVar, 0)
|
||||
|
||||
// Parse packages for ENV comments
|
||||
for _, pkgPath := range cl.packagePaths {
|
||||
envVars, err := ParseConfigPackage(pkgPath)
|
||||
@@ -102,6 +106,12 @@ func (cl *ConfigLoader) Load() error {
|
||||
cl.envVars[i].CurrentValue = os.Getenv(cl.envVars[i].Name)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// LoadConfigs executes the config functions to load actual configurations
|
||||
// This should be called after environment variables are properly set
|
||||
func (cl *ConfigLoader) LoadConfigs() error {
|
||||
// Load configurations
|
||||
for name, fn := range cl.configFuncs {
|
||||
cfg, err := fn()
|
||||
@@ -114,14 +124,22 @@ func (cl *ConfigLoader) Load() error {
|
||||
return nil
|
||||
}
|
||||
|
||||
// Load loads all configurations and extracts environment variables
|
||||
func (cl *ConfigLoader) Load() error {
|
||||
if err := cl.ParseEnvVars(); err != nil {
|
||||
return err
|
||||
}
|
||||
return cl.LoadConfigs()
|
||||
}
|
||||
|
||||
// GetConfig returns a loaded configuration by name
|
||||
func (cl *ConfigLoader) GetConfig(name string) (interface{}, bool) {
|
||||
func (cl *ConfigLoader) GetConfig(name string) (any, bool) {
|
||||
cfg, ok := cl.configs[name]
|
||||
return cfg, ok
|
||||
}
|
||||
|
||||
// GetAllConfigs returns all loaded configurations
|
||||
func (cl *ConfigLoader) GetAllConfigs() map[string]interface{} {
|
||||
func (cl *ConfigLoader) GetAllConfigs() map[string]any {
|
||||
return cl.configs
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user