mirror of https://github.com/spf13/viper.git
test: add examples for finder
Signed-off-by: Mark Sagi-Kazar <mark.sagikazar@gmail.com>
This commit is contained in:
parent
c9994ee0c6
commit
dd6204a5a0
|
@ -0,0 +1,75 @@
|
||||||
|
//go:build viper_finder
|
||||||
|
|
||||||
|
package viper_test
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
|
||||||
|
"github.com/sagikazarmark/locafero"
|
||||||
|
"github.com/spf13/afero"
|
||||||
|
|
||||||
|
"github.com/spf13/viper"
|
||||||
|
)
|
||||||
|
|
||||||
|
func ExampleFinder() {
|
||||||
|
fs := afero.NewMemMapFs()
|
||||||
|
|
||||||
|
fs.Mkdir("/home/user", 0o777)
|
||||||
|
|
||||||
|
f, _ := fs.Create("/home/user/myapp.yaml")
|
||||||
|
f.WriteString("foo: bar")
|
||||||
|
f.Close()
|
||||||
|
|
||||||
|
// HCL will have a "lower" priority in the search order
|
||||||
|
fs.Create("/home/user/myapp.hcl")
|
||||||
|
|
||||||
|
finder := locafero.Finder{
|
||||||
|
Paths: []string{"/home/user"},
|
||||||
|
Names: locafero.NameWithExtensions("myapp", viper.SupportedExts...),
|
||||||
|
Type: locafero.FileTypeFile, // This is important!
|
||||||
|
}
|
||||||
|
|
||||||
|
v := viper.NewWithOptions(viper.WithFinder(finder))
|
||||||
|
v.SetFs(fs)
|
||||||
|
v.ReadInConfig()
|
||||||
|
|
||||||
|
fmt.Println(v.GetString("foo"))
|
||||||
|
|
||||||
|
// Output:
|
||||||
|
// bar
|
||||||
|
}
|
||||||
|
|
||||||
|
func ExampleFinders() {
|
||||||
|
fs := afero.NewMemMapFs()
|
||||||
|
|
||||||
|
fs.Mkdir("/home/user", 0o777)
|
||||||
|
f, _ := fs.Create("/home/user/myapp.yaml")
|
||||||
|
f.WriteString("foo: bar")
|
||||||
|
f.Close()
|
||||||
|
|
||||||
|
fs.Mkdir("/etc/myapp", 0o777)
|
||||||
|
fs.Create("/etc/myapp/config.yaml")
|
||||||
|
|
||||||
|
// Combine multiple finders to search for files in multiple locations with different criteria
|
||||||
|
finder := viper.Finders(
|
||||||
|
locafero.Finder{
|
||||||
|
Paths: []string{"/home/user"},
|
||||||
|
Names: locafero.NameWithExtensions("myapp", viper.SupportedExts...),
|
||||||
|
Type: locafero.FileTypeFile, // This is important!
|
||||||
|
},
|
||||||
|
locafero.Finder{
|
||||||
|
Paths: []string{"/etc/myapp"},
|
||||||
|
Names: []string{"config.yaml"}, // Only accept YAML files in the system config directory
|
||||||
|
Type: locafero.FileTypeFile, // This is important!
|
||||||
|
},
|
||||||
|
)
|
||||||
|
|
||||||
|
v := viper.NewWithOptions(viper.WithFinder(finder))
|
||||||
|
v.SetFs(fs)
|
||||||
|
v.ReadInConfig()
|
||||||
|
|
||||||
|
fmt.Println(v.GetString("foo"))
|
||||||
|
|
||||||
|
// Output:
|
||||||
|
// bar
|
||||||
|
}
|
Loading…
Reference in New Issue