mirror of
https://github.com/spf13/viper
synced 2024-12-22 19:47:01 +00:00
feat: use new finder even when build tag is disabled
Signed-off-by: Mark Sagi-Kazar <mark.sagikazar@gmail.com>
This commit is contained in:
parent
1be81c313a
commit
db0bbd8f97
2 changed files with 42 additions and 0 deletions
13
file.go
13
file.go
|
@ -13,6 +13,19 @@ import (
|
||||||
// Search all configPaths for any config file.
|
// Search all configPaths for any config file.
|
||||||
// Returns the first path that exists (and is a config file).
|
// Returns the first path that exists (and is a config file).
|
||||||
func (v *Viper) findConfigFile() (string, error) {
|
func (v *Viper) findConfigFile() (string, error) {
|
||||||
|
if v.finder != nil {
|
||||||
|
results, err := v.finder.Find(v.fs)
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(results) == 0 {
|
||||||
|
return "", ConfigFileNotFoundError{v.configName, fmt.Sprintf("%s", v.configPaths)}
|
||||||
|
}
|
||||||
|
|
||||||
|
return results[0], nil
|
||||||
|
}
|
||||||
|
|
||||||
v.logger.Info("searching for config in paths", "paths", v.configPaths)
|
v.logger.Info("searching for config in paths", "paths", v.configPaths)
|
||||||
|
|
||||||
for _, cp := range v.configPaths {
|
for _, cp := range v.configPaths {
|
||||||
|
|
|
@ -22,6 +22,7 @@ import (
|
||||||
|
|
||||||
"github.com/fsnotify/fsnotify"
|
"github.com/fsnotify/fsnotify"
|
||||||
"github.com/go-viper/mapstructure/v2"
|
"github.com/go-viper/mapstructure/v2"
|
||||||
|
"github.com/sagikazarmark/locafero"
|
||||||
"github.com/spf13/afero"
|
"github.com/spf13/afero"
|
||||||
"github.com/spf13/cast"
|
"github.com/spf13/cast"
|
||||||
"github.com/spf13/pflag"
|
"github.com/spf13/pflag"
|
||||||
|
@ -415,6 +416,34 @@ func TestReadInConfig(t *testing.T) {
|
||||||
|
|
||||||
assert.Equal(t, "value", v.Get("key"))
|
assert.Equal(t, "value", v.Get("key"))
|
||||||
})
|
})
|
||||||
|
|
||||||
|
t.Run("find file using a finder", func(t *testing.T) {
|
||||||
|
fs := afero.NewMemMapFs()
|
||||||
|
|
||||||
|
err := fs.Mkdir(testutil.AbsFilePath(t, "/etc/viper"), 0o777)
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
_, err = fs.Create(testutil.AbsFilePath(t, "/etc/viper/config.yaml"))
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
finder := locafero.Finder{
|
||||||
|
Paths: []string{"/etc/viper"},
|
||||||
|
Names: locafero.NameWithExtensions("config", SupportedExts...),
|
||||||
|
Type: locafero.FileTypeFile,
|
||||||
|
}
|
||||||
|
|
||||||
|
v := NewWithOptions(WithFinder(finder))
|
||||||
|
|
||||||
|
v.SetFs(fs)
|
||||||
|
|
||||||
|
// These should be ineffective
|
||||||
|
v.AddConfigPath("/etc/something_else")
|
||||||
|
v.SetConfigName("not-config")
|
||||||
|
|
||||||
|
filename, err := v.getConfigFile()
|
||||||
|
assert.Equal(t, testutil.AbsFilePath(t, "/etc/viper/config.yaml"), filename)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestDefault(t *testing.T) {
|
func TestDefault(t *testing.T) {
|
||||||
|
|
Loading…
Reference in a new issue