...

Source file src/sigs.k8s.io/kustomize/kyaml/yaml/merge3/merge3.go

Documentation: sigs.k8s.io/kustomize/kyaml/yaml/merge3

     1  // Copyright 2019 The Kubernetes Authors.
     2  // SPDX-License-Identifier: Apache-2.0
     3  
     4  // Package merge contains libraries for merging fields from one RNode to another
     5  // RNode
     6  package merge3
     7  
     8  import (
     9  	"sigs.k8s.io/kustomize/kyaml/yaml"
    10  	"sigs.k8s.io/kustomize/kyaml/yaml/walk"
    11  )
    12  
    13  func Merge(dest, original, update *yaml.RNode) (*yaml.RNode, error) {
    14  	// if update == nil && original != nil => declarative deletion
    15  
    16  	return walk.Walker{
    17  		Visitor:            Visitor{},
    18  		VisitKeysAsScalars: true,
    19  		Sources:            []*yaml.RNode{dest, original, update}}.Walk()
    20  }
    21  
    22  func MergeStrings(dest, original, update string, infer bool) (string, error) {
    23  	srcOriginal, err := yaml.Parse(original)
    24  	if err != nil {
    25  		return "", err
    26  	}
    27  	srcUpdated, err := yaml.Parse(update)
    28  	if err != nil {
    29  		return "", err
    30  	}
    31  	d, err := yaml.Parse(dest)
    32  	if err != nil {
    33  		return "", err
    34  	}
    35  
    36  	result, err := walk.Walker{
    37  		InferAssociativeLists: infer,
    38  		Visitor:               Visitor{},
    39  		VisitKeysAsScalars:    true,
    40  		Sources:               []*yaml.RNode{d, srcOriginal, srcUpdated}}.Walk()
    41  	if err != nil {
    42  		return "", err
    43  	}
    44  	return result.String()
    45  }
    46  

View as plain text