forked from Elara6331/itd
Warn when Koanf read fails (#47)
Figured out the problem in issue #32, the toml file syntax was invalid (I had `'` instead of `"` at some values), but there was nothing in the logs about it.
Moved the config reading (and watching) into the same function, which logs the error as a warning.
I wanted to try moving the whole `if` into a separate function, but I kept getting errors when I tried to extract the `path` from the `File`, so I have that attempt in a separate branch not in this pull request: 5a84bf8148
Reviewed-on: https://gitea.arsenm.dev/Arsen6331/itd/pulls/47
Co-authored-by: Hunman <sanyi.exe@gmail.com>
Co-committed-by: Hunman <sanyi.exe@gmail.com>
This commit is contained in:
parent
248beffa2f
commit
5f5c67f7cc
26
config.go
26
config.go
@ -16,6 +16,8 @@ import (
|
|||||||
var cfgDir string
|
var cfgDir string
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
|
etcPath := "/etc/itd.toml";
|
||||||
|
|
||||||
// Set up logger
|
// Set up logger
|
||||||
log.Logger = log.Output(zerolog.ConsoleWriter{Out: os.Stderr})
|
log.Logger = log.Output(zerolog.ConsoleWriter{Out: os.Stderr})
|
||||||
|
|
||||||
@ -51,15 +53,9 @@ func init() {
|
|||||||
// Set config defaults
|
// Set config defaults
|
||||||
setCfgDefaults()
|
setCfgDefaults()
|
||||||
|
|
||||||
// Load config files
|
// Load and watch config files
|
||||||
etcProvider := file.Provider("/etc/itd.toml")
|
loadAndwatchCfgFile(etcPath)
|
||||||
cfgProvider := file.Provider(cfgPath)
|
loadAndwatchCfgFile(cfgPath)
|
||||||
k.Load(etcProvider, toml.Parser())
|
|
||||||
k.Load(cfgProvider, toml.Parser())
|
|
||||||
|
|
||||||
// Watch configs for changes
|
|
||||||
cfgWatch(etcProvider)
|
|
||||||
cfgWatch(cfgProvider)
|
|
||||||
|
|
||||||
// Load envireonment variables
|
// Load envireonment variables
|
||||||
k.Load(env.Provider("ITD_", "_", func(s string) string {
|
k.Load(env.Provider("ITD_", "_", func(s string) string {
|
||||||
@ -67,14 +63,22 @@ func init() {
|
|||||||
}), nil)
|
}), nil)
|
||||||
}
|
}
|
||||||
|
|
||||||
func cfgWatch(provider *file.File) {
|
func loadAndwatchCfgFile(filename string) {
|
||||||
|
provider := file.Provider(filename)
|
||||||
|
|
||||||
|
if cfgError := k.Load(provider, toml.Parser()); cfgError != nil {
|
||||||
|
log.Warn().Str("filename", filename).Err(cfgError).Msg("Error while trying to read config file")
|
||||||
|
}
|
||||||
|
|
||||||
// Watch for changes and reload when detected
|
// Watch for changes and reload when detected
|
||||||
provider.Watch(func(_ interface{}, err error) {
|
provider.Watch(func(_ interface{}, err error) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
k.Load(provider, toml.Parser())
|
if cfgError := k.Load(provider, toml.Parser()); cfgError != nil {
|
||||||
|
log.Warn().Str("filename", filename).Err(cfgError).Msg("Error while trying to read config file")
|
||||||
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user