diff --git a/pkg/plugins/executable.go b/pkg/plugins/executable.go index 2d4013c70..23f94745c 100644 --- a/pkg/plugins/executable.go +++ b/pkg/plugins/executable.go @@ -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 {