github.com/simonferquel/app@v0.6.1-0.20181012141724-68b7cccf26ac/types/settings/merge.go (about) 1 package settings 2 3 import ( 4 "github.com/imdario/mergo" 5 "github.com/pkg/errors" 6 ) 7 8 // Merge merges multiple settings overriding duplicated keys 9 func Merge(settings ...Settings) (Settings, error) { 10 s := Settings(map[string]interface{}{}) 11 for _, setting := range settings { 12 if err := mergo.Merge(&s, setting, mergo.WithOverride, mergo.WithAppendSlice); err != nil { 13 return s, errors.Wrap(err, "cannot merge settings") 14 } 15 } 16 return s, nil 17 }