From c3410a3d914ea0369c8bba92e44f9b736b9332fc Mon Sep 17 00:00:00 2001 From: Nicola Murino Date: Sun, 3 Jan 2021 17:57:07 +0100 Subject: [PATCH] config: don't log a warning if the config file is not found we also support configuration via env vars --- config/config.go | 13 +++++++++++-- config/config_test.go | 8 ++++++++ 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/config/config.go b/config/config.go index 7cbd946f..f5030ea9 100644 --- a/config/config.go +++ b/config/config.go @@ -2,6 +2,7 @@ package config import ( + "errors" "fmt" "os" "path/filepath" @@ -369,8 +370,16 @@ func LoadConfig(configDir, configFile string) error { viper.AddConfigPath(".") setConfigFile(configDir, configFile) if err = viper.ReadInConfig(); err != nil { - logger.Warn(logSender, "", "error loading configuration file: %v", err) - logger.WarnToConsole("error loading configuration file: %v", err) + // if the user specify a configuration file we get os.ErrNotExist. + // viper.ConfigFileNotFoundError is returned if viper is unable + // to find sftpgo.{json,yaml, etc..} in any of the search paths + if errors.As(err, &viper.ConfigFileNotFoundError{}) { + logger.Debug(logSender, "", "no configuration file found") + } else { + // should we return the error and not start here? + logger.Warn(logSender, "", "error loading configuration file: %v", err) + logger.WarnToConsole("error loading configuration file: %v", err) + } } err = viper.Unmarshal(&globalConf) if err != nil { diff --git a/config/config_test.go b/config/config_test.go index 29821a45..a4d7108e 100644 --- a/config/config_test.go +++ b/config/config_test.go @@ -58,6 +58,14 @@ func TestLoadConfigTest(t *testing.T) { assert.NoError(t, err) } +func TestLoadConfigFileNotFound(t *testing.T) { + reset() + + viper.SetConfigName("configfile") + err := config.LoadConfig(os.TempDir(), "") + assert.NoError(t, err) +} + func TestEmptyBanner(t *testing.T) { reset()