...
1
2
3
4
5
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
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