github.com/docker/libcompose@v0.4.1-0.20210616120443-2a046c0bdbf2/config/utils.go (about) 1 package config 2 3 func merge(existing, value interface{}) interface{} { 4 // append strings 5 if left, lok := existing.([]interface{}); lok { 6 if right, rok := value.([]interface{}); rok { 7 return append(left, right...) 8 } 9 } 10 11 //merge maps 12 if left, lok := existing.(map[interface{}]interface{}); lok { 13 if right, rok := value.(map[interface{}]interface{}); rok { 14 newLeft := make(map[interface{}]interface{}) 15 for k, v := range left { 16 newLeft[k] = v 17 } 18 for k, v := range right { 19 newLeft[k] = v 20 } 21 return newLeft 22 } 23 } 24 25 return value 26 } 27 28 func clone(in RawService) RawService { 29 result := RawService{} 30 for k, v := range in { 31 result[k] = v 32 } 33 34 return result 35 } 36 37 func asString(obj interface{}) string { 38 if v, ok := obj.(string); ok { 39 return v 40 } 41 return "" 42 }