mirror of
https://github.com/spf13/viper
synced 2025-05-10 22:27:18 +00:00
Merge aa2bb3a537
into 01d7d76eb0
This commit is contained in:
commit
0c356e526c
2 changed files with 36 additions and 2 deletions
22
viper.go
22
viper.go
|
@ -1323,7 +1323,10 @@ func WriteConfig() error { return v.WriteConfig() }
|
||||||
func (v *Viper) WriteConfig() error {
|
func (v *Viper) WriteConfig() error {
|
||||||
filename, err := v.getConfigFile()
|
filename, err := v.getConfigFile()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
filename, err = v.getDefaultConfigFile()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return v.writeConfig(filename, true)
|
return v.writeConfig(filename, true)
|
||||||
}
|
}
|
||||||
|
@ -1333,11 +1336,26 @@ func SafeWriteConfig() error { return v.SafeWriteConfig() }
|
||||||
func (v *Viper) SafeWriteConfig() error {
|
func (v *Viper) SafeWriteConfig() error {
|
||||||
filename, err := v.getConfigFile()
|
filename, err := v.getConfigFile()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
filename, err = v.getDefaultConfigFile()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return v.writeConfig(filename, false)
|
return v.writeConfig(filename, false)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (v *Viper) getDefaultConfigFile() (string, error) {
|
||||||
|
if v.configName == "" {
|
||||||
|
return "", ConfigFileNotFoundError{v.configName, fmt.Sprintf("%s", v.configPaths)}
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(v.configPaths) == 0 {
|
||||||
|
return v.configName + "." + SupportedExts[0], nil
|
||||||
|
} else {
|
||||||
|
return filepath.Join(v.configPaths[0], v.configName+"."+SupportedExts[0]), nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// WriteConfigAs writes current configuration to a given filename.
|
// WriteConfigAs writes current configuration to a given filename.
|
||||||
func WriteConfigAs(filename string) error { return v.WriteConfigAs(filename) }
|
func WriteConfigAs(filename string) error { return v.WriteConfigAs(filename) }
|
||||||
func (v *Viper) WriteConfigAs(filename string) error {
|
func (v *Viper) WriteConfigAs(filename string) error {
|
||||||
|
|
|
@ -1349,6 +1349,22 @@ func TestWriteConfigYAML(t *testing.T) {
|
||||||
assert.Equal(t, yamlWriteExpected, read)
|
assert.Equal(t, yamlWriteExpected, read)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestGetDefaultConfigFile(t *testing.T) {
|
||||||
|
v := New()
|
||||||
|
home, err := filepath.Abs("/homedir")
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
v.AddConfigPath(home)
|
||||||
|
v.SetConfigName("c")
|
||||||
|
filename, err := v.getDefaultConfigFile()
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
ext := "json"
|
||||||
|
assert.Equal(t, filename, filepath.Join("/homedir", "c"+"."+ext))
|
||||||
|
}
|
||||||
|
|
||||||
var yamlMergeExampleTgt = []byte(`
|
var yamlMergeExampleTgt = []byte(`
|
||||||
hello:
|
hello:
|
||||||
pop: 37890
|
pop: 37890
|
||||||
|
|
Loading…
Add table
Reference in a new issue