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  }