forked from TrueCloudLab/frostfs-node
[#238] node: Read cfg from dir even if cfg file not set
Signed-off-by: Anton Nikiforov <an.nikiforov@yadro.com>
This commit is contained in:
parent
8d2f443868
commit
995db117d0
3 changed files with 34 additions and 15 deletions
|
@ -1,6 +1,7 @@
|
|||
package config
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
"path"
|
||||
|
||||
|
@ -20,7 +21,7 @@ func ReadConfigDir(v *viper.Viper, configDir string) error {
|
|||
continue
|
||||
}
|
||||
ext := path.Ext(entry.Name())
|
||||
if ext != ".yaml" && ext != ".yml" {
|
||||
if ext != ".yaml" && ext != ".yml" && ext != ".json" {
|
||||
continue
|
||||
}
|
||||
|
||||
|
@ -33,22 +34,15 @@ func ReadConfigDir(v *viper.Viper, configDir string) error {
|
|||
}
|
||||
|
||||
// mergeConfig reads config file and merge its content with current viper.
|
||||
func mergeConfig(v *viper.Viper, fileName string) (err error) {
|
||||
var cfgFile *os.File
|
||||
cfgFile, err = os.Open(fileName)
|
||||
func mergeConfig(v *viper.Viper, fileName string) error {
|
||||
cv := viper.New()
|
||||
cv.SetConfigFile(fileName)
|
||||
err := cv.ReadInConfig()
|
||||
if err != nil {
|
||||
return err
|
||||
return fmt.Errorf("failed to read config: %w", err)
|
||||
}
|
||||
|
||||
defer func() {
|
||||
errClose := cfgFile.Close()
|
||||
if err == nil {
|
||||
err = errClose
|
||||
}
|
||||
}()
|
||||
|
||||
if err = v.MergeConfig(cfgFile); err != nil {
|
||||
return err
|
||||
if err = v.MergeConfigMap(cv.AllSettings()); err != nil {
|
||||
return fmt.Errorf("failed to merge config: %w", err)
|
||||
}
|
||||
|
||||
return nil
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue