From ba6b7543b4d35d9274720c08bdc8e22626df0b5c Mon Sep 17 00:00:00 2001 From: Anatoli Babenia Date: Wed, 25 Dec 2019 16:24:23 +0300 Subject: [PATCH] Do not ignore missing file from --config option (fixes #265) --- cmd/root.go | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/cmd/root.go b/cmd/root.go index 149ec05..cdbc60f 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -66,9 +66,6 @@ func initCli() { // initConfig reads in config file and ENV variables if set. func initConfig() { - filepathToCfg := getCfgFile(cfgFile) - viper.SetConfigFile(filepathToCfg) - viper.SetDefault("log.level", log.InfoLevel.String()) viper.SetDefault("log.path", "./dive.log") viper.SetDefault("log.enabled", false) @@ -105,9 +102,20 @@ func initConfig() { viper.SetEnvKeyReplacer(strings.NewReplacer("-", "_")) viper.AutomaticEnv() - // If a config file is found, read it in. - if err := viper.ReadInConfig(); err == nil { + // if config files are present, load them + if cfgFile == "" { + // default configs are ignored if not found + filepathToCfg := getDefaultCfgFile() + viper.SetConfigFile(filepathToCfg) + } else { + viper.SetConfigFile(cfgFile) + } + err := viper.ReadInConfig() + if err == nil { fmt.Println("Using config file:", viper.ConfigFileUsed()) + } else if cfgFile != "" { + fmt.Println(err) + os.Exit(0) } // set global defaults (for performance) @@ -147,14 +155,10 @@ func initLogging() { } } -// getCfgFile checks for config file in paths from xdg specs +// getDefaultCfgFile checks for config file in paths from xdg specs // and in $HOME/.config/dive/ directory // defaults to $HOME/.dive.yaml -func getCfgFile(fromFlag string) string { - if fromFlag != "" { - return fromFlag - } - +func getDefaultCfgFile() string { home, err := homedir.Dir() if err != nil { fmt.Println(err)