Warn when Koanf read fails (#47)
	
		
			
	
		
	
	
		
	
		
			All checks were successful
		
		
	
	
		
			
				
	
				ci/woodpecker/push/woodpecker Pipeline was successful
				
			
		
		
	
	
				
					
				
			
		
			All checks were successful
		
		
	
	ci/woodpecker/push/woodpecker Pipeline was successful
				
			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:
		
							
								
								
									
										26
									
								
								config.go
									
									
									
									
									
								
							
							
						
						
									
										26
									
								
								config.go
									
									
									
									
									
								
							@@ -16,6 +16,8 @@ import (
 | 
			
		||||
var cfgDir string
 | 
			
		||||
 | 
			
		||||
func init() {
 | 
			
		||||
	etcPath := "/etc/itd.toml";
 | 
			
		||||
 | 
			
		||||
	// Set up logger
 | 
			
		||||
	log.Logger = log.Output(zerolog.ConsoleWriter{Out: os.Stderr})
 | 
			
		||||
 | 
			
		||||
@@ -51,15 +53,9 @@ func init() {
 | 
			
		||||
	// Set config defaults
 | 
			
		||||
	setCfgDefaults()
 | 
			
		||||
 | 
			
		||||
	// Load config files
 | 
			
		||||
	etcProvider := file.Provider("/etc/itd.toml")
 | 
			
		||||
	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 {
 | 
			
		||||
@@ -67,14 +63,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().Str("filename", filename).Err(cfgError).Msg("Error while trying to read config file")
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// 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().Str("filename", filename).Err(cfgError).Msg("Error while trying to read config file")
 | 
			
		||||
		}
 | 
			
		||||
	})
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user