github.com/yankunsam/loki/v2@v2.6.3-0.20220817130409-389df5235c27/pkg/util/mapmerge.go (about)

     1  package util
     2  
     3  // CopyMap makes a copy of the given map
     4  func CopyMap(m map[string]string) map[string]string {
     5  	var newMap = make(map[string]string, len(m))
     6  
     7  	if m == nil {
     8  		return nil
     9  	}
    10  
    11  	for k, v := range m {
    12  		newMap[k] = v
    13  	}
    14  
    15  	return newMap
    16  }
    17  
    18  // MergeMaps merges the overlay map onto the base map, with overlay taking precedence
    19  // NOTE: this treats the given base and overlay maps as immutable, and returns a copy
    20  func MergeMaps(base map[string]string, overlay map[string]string) map[string]string {
    21  	if base == nil {
    22  		return CopyMap(overlay)
    23  	}
    24  
    25  	newMap := CopyMap(base)
    26  	if overlay == nil {
    27  		return newMap
    28  	}
    29  
    30  	for k, v := range overlay {
    31  		newMap[k] = v
    32  	}
    33  
    34  	return newMap
    35  }