forked from grassrootseconomics/visedriver
config reporter try 1
This commit is contained in:
parent
c0534ede1b
commit
16dbdc6c4a
@ -3,6 +3,7 @@ package config
|
|||||||
import (
|
import (
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
"git.defalsify.org/vise.git/logging"
|
||||||
"git.grassecon.net/grassrootseconomics/visedriver/env"
|
"git.grassecon.net/grassrootseconomics/visedriver/env"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -21,7 +22,7 @@ func setLanguage() error {
|
|||||||
defaultLanguage = env.GetEnv("DEFAULT_LANGUAGE", defaultLanguage)
|
defaultLanguage = env.GetEnv("DEFAULT_LANGUAGE", defaultLanguage)
|
||||||
languages = strings.Split(env.GetEnv("LANGUAGES", defaultLanguage), ",")
|
languages = strings.Split(env.GetEnv("LANGUAGES", defaultLanguage), ",")
|
||||||
haveDefaultLanguage := false
|
haveDefaultLanguage := false
|
||||||
for i, v := range(languages) {
|
for i, v := range languages {
|
||||||
languages[i] = strings.ReplaceAll(v, " ", "")
|
languages[i] = strings.ReplaceAll(v, " ", "")
|
||||||
if languages[i] == defaultLanguage {
|
if languages[i] == defaultLanguage {
|
||||||
haveDefaultLanguage = true
|
haveDefaultLanguage = true
|
||||||
@ -35,8 +36,6 @@ func setLanguage() error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
func setConn() error {
|
func setConn() error {
|
||||||
DbConn = env.GetEnv("DB_CONN", "")
|
DbConn = env.GetEnv("DB_CONN", "")
|
||||||
return nil
|
return nil
|
||||||
@ -44,16 +43,25 @@ func setConn() error {
|
|||||||
|
|
||||||
// LoadConfig initializes the configuration values after environment variables are loaded.
|
// LoadConfig initializes the configuration values after environment variables are loaded.
|
||||||
func LoadConfig() error {
|
func LoadConfig() error {
|
||||||
err := setConn()
|
if err := setLanguage(); err != nil {
|
||||||
if err != nil {
|
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
err = setLanguage()
|
if err := setConn(); err != nil {
|
||||||
if err != nil {
|
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
DefaultLanguage = defaultLanguage
|
DefaultLanguage = defaultLanguage
|
||||||
Languages = languages
|
Languages = languages
|
||||||
|
|
||||||
|
|
||||||
|
// Create and use reporter
|
||||||
|
logger := logging.NewVanilla().WithDomain("config")
|
||||||
|
reporter := NewReporter(logger)
|
||||||
|
|
||||||
|
reporter.AddValue("CUSTOM_SETTING", func() string {
|
||||||
|
return env.GetEnv("CUSTOM_SETTING", "default")
|
||||||
|
}, false)
|
||||||
|
|
||||||
|
reporter.Report("INFO")
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
75
config/reporter.go
Normal file
75
config/reporter.go
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
//go:build configreport
|
||||||
|
|
||||||
|
package config
|
||||||
|
|
||||||
|
import (
|
||||||
|
"git.defalsify.org/vise.git/logging"
|
||||||
|
"git.grassecon.net/grassrootseconomics/visedriver/env"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ConfigValue represents a configuration key-value pair
|
||||||
|
type ConfigValue struct {
|
||||||
|
Key string
|
||||||
|
ValueFunc func() string
|
||||||
|
Sensitive bool
|
||||||
|
}
|
||||||
|
|
||||||
|
// Reporter handles configuration reporting
|
||||||
|
type Reporter struct {
|
||||||
|
values []ConfigValue
|
||||||
|
logger logging.Vanilla
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewReporter(logger logging.Vanilla) *Reporter {
|
||||||
|
return &Reporter{
|
||||||
|
values: defaultConfigValues(),
|
||||||
|
logger: logger,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func defaultConfigValues() []ConfigValue {
|
||||||
|
return []ConfigValue{
|
||||||
|
{"HOST", func() string { return env.GetEnv("HOST", "127.0.0.1") }, false},
|
||||||
|
{"PORT", func() string { return env.GetEnv("PORT", "7123") }, false},
|
||||||
|
{"AT_ENDPOINT", func() string { return env.GetEnv("AT_ENDPOINT", "/ussd/africastalking") }, false},
|
||||||
|
{"DB_CONN", func() string { return env.GetEnv("DB_CONN", "") }, true},
|
||||||
|
{"DB_TIMEZONE", func() string { return env.GetEnv("DB_TIMEZONE", "") }, false},
|
||||||
|
{"DB_SCHEMA", func() string { return env.GetEnv("DB_SCHEMA", "") }, false},
|
||||||
|
{"CUSTODIAL_URL_BASE", func() string { return env.GetEnv("CUSTODIAL_URL_BASE", "") }, false},
|
||||||
|
{"BEARER_TOKEN", func() string { return env.GetEnv("BEARER_TOKEN", "") }, true},
|
||||||
|
{"DATA_URL_BASE", func() string { return env.GetEnv("DATA_URL_BASE", "") }, false},
|
||||||
|
{"DEFAULT_LANGUAGE", func() string { return env.GetEnv("DEFAULT_LANGUAGE", "eng") }, false},
|
||||||
|
{"LANGUAGES", func() string { return env.GetEnv("LANGUAGES", "eng") }, false},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *Reporter) AddValue(key string, valueFn func() string, sensitive bool) {
|
||||||
|
r.values = append(r.values, ConfigValue{
|
||||||
|
Key: key,
|
||||||
|
ValueFunc: valueFn,
|
||||||
|
Sensitive: sensitive,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// Report outputs all configuration values at the specified log level
|
||||||
|
func (r *Reporter) Report(level string) {
|
||||||
|
r.logger.Debugf("Configuration Report:")
|
||||||
|
for _, cv := range r.values {
|
||||||
|
value := cv.ValueFunc()
|
||||||
|
if cv.Sensitive {
|
||||||
|
value = "****"
|
||||||
|
}
|
||||||
|
switch level {
|
||||||
|
case "DEBUG":
|
||||||
|
r.logger.Debugf("%s: %s", cv.Key, value)
|
||||||
|
case "INFO":
|
||||||
|
r.logger.Infof("%s: %s", cv.Key, value)
|
||||||
|
case "WARN":
|
||||||
|
r.logger.Warnf("%s: %s", cv.Key, value)
|
||||||
|
case "ERROR":
|
||||||
|
r.logger.Errorf("%s: %s", cv.Key, value)
|
||||||
|
default:
|
||||||
|
r.logger.Infof("%s: %s", cv.Key, value)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
17
config/reporter_noop.go
Normal file
17
config/reporter_noop.go
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
//go:build !configreport
|
||||||
|
|
||||||
|
package config
|
||||||
|
|
||||||
|
import (
|
||||||
|
"git.defalsify.org/vise.git/logging"
|
||||||
|
)
|
||||||
|
|
||||||
|
type Reporter struct{}
|
||||||
|
|
||||||
|
func NewReporter(logger logging.Vanilla) *Reporter {
|
||||||
|
return &Reporter{}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *Reporter) AddValue(key string, valueFn func() string, sensitive bool) {}
|
||||||
|
|
||||||
|
func (r *Reporter) Report(level string) {}
|
Loading…
Reference in New Issue
Block a user