From c21acdd4223dc62c65227e265de0fcb4d35b1493 Mon Sep 17 00:00:00 2001 From: koooge Date: Wed, 23 May 2018 18:01:59 +0000 Subject: [PATCH] Use defaultConfigFile if configFile is not exist --- viper.go | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/viper.go b/viper.go index 907a102..3d71fa6 100644 --- a/viper.go +++ b/viper.go @@ -1211,7 +1211,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) } @@ -1221,11 +1224,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 {