add the unstructured to ENV of exec plugins

This commit is contained in:
Jingfang Liu
2019-04-16 13:12:42 -07:00
parent b9007fcc29
commit fb9e00bf33

View File

@@ -44,6 +44,10 @@ type ExecPlugin struct {
// Each line of this file is treated as one argument
argsFromFile string
// cfg hold the unstructured data which can be used
// to configure the plugin
cfg string
// resmap Factory to make resources
rf *resmap.Factory
@@ -60,6 +64,12 @@ func (p *ExecPlugin) Config(
p.ldr = ldr
var err error
data, err := yaml.Marshal(k)
if err != nil {
return err
}
p.cfg = string(data)
p.argOneLiner, err = k.GetFieldValue("arg")
if err != nil && !isNoFieldError(err) {
return err
@@ -77,7 +87,7 @@ func (p *ExecPlugin) Generate() (resmap.ResMap, error) {
return nil, err
}
cmd := exec.Command(p.name, args...)
cmd.Env = os.Environ()
cmd.Env = p.getEnv()
cmd.Stderr = os.Stderr
output, err := cmd.Output()
if err != nil {
@@ -98,7 +108,7 @@ func (p *ExecPlugin) Transform(rm resmap.ResMap) error {
return err
}
cmd := exec.Command(p.name, args...)
cmd.Env = os.Environ()
cmd.Env = p.getEnv()
cmd.Stdin = bytes.NewReader(content)
cmd.Stderr = os.Stderr
output, err := cmd.Output()
@@ -131,6 +141,12 @@ func (p *ExecPlugin) getArgs() ([]string, error) {
return args, nil
}
func (p *ExecPlugin) getEnv() []string {
env := os.Environ()
env = append(env, "KUSTOMIZE_PLUGIN_CONFIG_STRING="+p.cfg)
return env
}
func isNoFieldError(e error) bool {
_, ok := e.(types.NoFieldError)
if ok {