This commit is contained in:
koooge 2019-11-16 17:03:32 -03:00 committed by GitHub
commit 0c356e526c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 36 additions and 2 deletions

View file

@ -1323,7 +1323,10 @@ func WriteConfig() error { return v.WriteConfig() }
func (v *Viper) WriteConfig() error {
filename, err := v.getConfigFile()
if err != nil {
return err
filename, err = v.getDefaultConfigFile()
if err != nil {
return err
}
}
return v.writeConfig(filename, true)
}
@ -1333,11 +1336,26 @@ func SafeWriteConfig() error { return v.SafeWriteConfig() }
func (v *Viper) SafeWriteConfig() error {
filename, err := v.getConfigFile()
if err != nil {
return err
filename, err = v.getDefaultConfigFile()
if err != nil {
return err
}
}
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.
func WriteConfigAs(filename string) error { return v.WriteConfigAs(filename) }
func (v *Viper) WriteConfigAs(filename string) error {

View file

@ -1349,6 +1349,22 @@ func TestWriteConfigYAML(t *testing.T) {
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(`
hello:
pop: 37890