mirror of https://github.com/k3s-io/k3s
37 lines
775 B
Go
37 lines
775 B
Go
|
// Copyright 2019 The Kubernetes Authors.
|
||
|
// SPDX-License-Identifier: Apache-2.0
|
||
|
|
||
|
package exec
|
||
|
|
||
|
import (
|
||
|
"io"
|
||
|
"os"
|
||
|
"os/exec"
|
||
|
|
||
|
"sigs.k8s.io/kustomize/kyaml/fn/runtime/runtimeutil"
|
||
|
"sigs.k8s.io/kustomize/kyaml/yaml"
|
||
|
)
|
||
|
|
||
|
type Filter struct {
|
||
|
// Path is the path to the executable to run
|
||
|
Path string `yaml:"path,omitempty"`
|
||
|
|
||
|
// Args are the arguments to the executable
|
||
|
Args []string `yaml:"args,omitempty"`
|
||
|
|
||
|
runtimeutil.FunctionFilter
|
||
|
}
|
||
|
|
||
|
func (c *Filter) Filter(nodes []*yaml.RNode) ([]*yaml.RNode, error) {
|
||
|
c.FunctionFilter.Run = c.Run
|
||
|
return c.FunctionFilter.Filter(nodes)
|
||
|
}
|
||
|
|
||
|
func (c *Filter) Run(reader io.Reader, writer io.Writer) error {
|
||
|
cmd := exec.Command(c.Path, c.Args...)
|
||
|
cmd.Stdin = reader
|
||
|
cmd.Stdout = writer
|
||
|
cmd.Stderr = os.Stderr
|
||
|
return cmd.Run()
|
||
|
}
|