summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlex Goodman <wagoodman@users.noreply.github.com>2020-02-09 10:47:52 -0500
committerGitHub <noreply@github.com>2020-02-09 10:47:52 -0500
commit04038ecac9571c76a22242bd6710ac146353c269 (patch)
treecbd7df2d77826af3b728d25ef982736e00543aa3
parent338953d1729cbe92bfa0f587c1e109faab79f1e8 (diff)
parentba6b7543b4d35d9274720c08bdc8e22626df0b5c (diff)
Merge pull request #266 from abitrolly/confix
Do not ignore missing file from --config option (fixes #265)
-rw-r--r--cmd/root.go26
1 files 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)