diff --git a/viper.go b/viper.go index 5a0b180..db0bd26 100644 --- a/viper.go +++ b/viper.go @@ -751,13 +751,18 @@ func (v *Viper) ReadConfig(in io.Reader) error { // Loads configuration from a directory tree where filenames are keys // and file contents are values. -func ReadDir(dirname string) error { return v.ReadDir(dirname) } -func (v *Viper) ReadDir(dirname string) error { - config, err := v.readDir(dirname, "") - if err == nil { - v.config = config +func ReadInConfigDir() error { return v.ReadInConfigDir() } +func (v *Viper) ReadInConfigDir() error { + for _, cp := range v.configPaths { + if _, err := os.Stat(cp); err == nil { + config, err := v.readDir(cp, "") + if err == nil { + v.config = config + } + return err + } } - return err + return nil } func (v *Viper) readDir(dirname, keyPrefix string) (map[string]interface{}, error) { diff --git a/viper_test.go b/viper_test.go index 94c2e96..de276f5 100644 --- a/viper_test.go +++ b/viper_test.go @@ -579,7 +579,8 @@ func TestReadDir(t *testing.T) { } v := New() - v.ReadDir(dir) + v.AddConfigPath(dir) + v.ReadInConfigDir() t.Log(v.AllSettings()) assert.True(t, v.GetBool("app.debug"))