Load the configs in one function, which handles the error too
ci/woodpecker/pr/woodpecker Pipeline was successful Details

We are doing the same thing to global and user level config, so it makes
sense to do it in a separate function
Loaded in the fmt package, so we can print out everything in one useful
error (actually warning) message
This commit is contained in:
Hunman 2022-12-30 00:23:31 +01:00
parent 82bb145cbc
commit a254762288
1 changed files with 14 additions and 11 deletions

View File

@ -1,6 +1,7 @@
package main
import (
"fmt"
"os"
"path/filepath"
"strings"
@ -53,15 +54,9 @@ func init() {
// Set config defaults
setCfgDefaults()
// Load config files
etcProvider := file.Provider(etcPath)
cfgProvider := file.Provider(cfgPath)
k.Load(etcProvider, toml.Parser())
k.Load(cfgProvider, toml.Parser())
// Watch configs for changes
cfgWatch(etcProvider)
cfgWatch(cfgProvider)
// Load and watch config files
loadAndwatchCfgFile(etcPath)
loadAndwatchCfgFile(cfgPath)
// Load envireonment variables
k.Load(env.Provider("ITD_", "_", func(s string) string {
@ -69,14 +64,22 @@ func init() {
}), 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().Msg(fmt.Sprintf("Error while trying to read %s: %s\n", filename, cfgError.Error()))
}
// Watch for changes and reload when detected
provider.Watch(func(_ interface{}, err error) {
if err != nil {
return
}
k.Load(provider, toml.Parser())
if cfgError := k.Load(provider, toml.Parser()); cfgError != nil {
log.Warn().Msg(fmt.Sprintf("Error while trying to read %s: %s\n", filename, cfgError.Error()))
}
})
}