...

Source file src/sigs.k8s.io/kustomize/api/filters/patchstrategicmerge/patchstrategicmerge.go

Documentation: sigs.k8s.io/kustomize/api/filters/patchstrategicmerge

     1  // Copyright 2019 The Kubernetes Authors.
     2  // SPDX-License-Identifier: Apache-2.0
     3  
     4  package patchstrategicmerge
     5  
     6  import (
     7  	"sigs.k8s.io/kustomize/kyaml/kio"
     8  	"sigs.k8s.io/kustomize/kyaml/yaml"
     9  	"sigs.k8s.io/kustomize/kyaml/yaml/merge2"
    10  )
    11  
    12  type Filter struct {
    13  	Patch *yaml.RNode
    14  }
    15  
    16  var _ kio.Filter = Filter{}
    17  
    18  // Filter does a strategic merge patch, which can delete nodes.
    19  func (pf Filter) Filter(nodes []*yaml.RNode) ([]*yaml.RNode, error) {
    20  	var result []*yaml.RNode
    21  	for i := range nodes {
    22  		r, err := merge2.Merge(
    23  			pf.Patch, nodes[i],
    24  			yaml.MergeOptions{
    25  				ListIncreaseDirection: yaml.MergeOptionsListPrepend,
    26  			},
    27  		)
    28  		if err != nil {
    29  			return nil, err
    30  		}
    31  		if r != nil {
    32  			result = append(result, r)
    33  		}
    34  	}
    35  	return result, nil
    36  }
    37  

View as plain text