From ea0dc3e3e0abe2a76007dfa3f09c933913240d2b Mon Sep 17 00:00:00 2001 From: Laszlo Kiss Date: Sat, 23 Jan 2016 22:20:33 -0700 Subject: [PATCH] Added a straight forward merge of the maps of configuration objects. --- viper.go | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/viper.go b/viper.go index 0c5310c..5991198 100644 --- a/viper.go +++ b/viper.go @@ -950,6 +950,18 @@ func (v *Viper) MergeConfig(in io.Reader) error { return nil } +// Merge a configuration into another. +func Merge( other *Viper ) { v.Merge( other ) } +func (v *Viper) Merge( other *Viper ) { + mergeMaps( other.config, v.config, nil ) + mergeMaps( other.override, v.override, nil ) + mergeMaps( other.defaults, v.defaults, nil ) + mergeMaps( other.kvstore, v.kvstore, nil ) + for key,val := range other.pflags { v.pflags[key] = val } + for key,val := range other.env { v.env[key] = val } + for key,val := range other.aliases { v.aliases[key] = val } +} + func keyExists(k string, m map[string]interface{}) string { lk := strings.ToLower(k) for mk := range m {