package layer import ( "bytes" "sigs.k8s.io/kustomize/kyaml/kio" ) // Filter creates a new Layer from the result of applying the input YAML filters // against the contents of Layer l // TODO: move to mutate func Filter(l Layer, filters ...kio.Filter) (Layer, error) { r, err := l.Uncompressed() if err != nil { return nil, err } b := new(bytes.Buffer) rw := &kio.ByteReadWriter{Reader: r, Writer: b} if err := (kio.Pipeline{ Filters: filters, Inputs: []kio.Reader{rw}, Outputs: []kio.Writer{rw}, }).Execute(); err != nil { return nil, err } return New(l.Type(), b.Bytes(), WithAnnotations(l.Annotations())) }