From a254762288317377c5f041c35a6ea5f9d76f034e Mon Sep 17 00:00:00 2001 From: Hunman Date: Fri, 30 Dec 2022 00:23:31 +0100 Subject: [PATCH] Load the configs in one function, which handles the error too 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 --- config.go | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/config.go b/config.go index 2375cb2..c069349 100644 --- a/config.go +++ b/config.go @@ -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())) + } }) }