// Copyright 2024 Matthew Rich . All rights reserved. package command import ( "os" "os/exec" "io" "log/slog" ) var ( ) type ExecCommandProvider struct { *exec.Cmd } // Consturct a new exec func NewExecProvider(c *Command, value any) *ExecCommandProvider { if args, err := c.Template(value); err == nil { slog.Info("command.NewExecProvider", "command", c.Path, "args", args, "target", c.TargetRef) return &ExecCommandProvider{exec.Command(c.Path, args...)} } return nil } func (e *ExecCommandProvider) SetCmdEnv(env []string) { e.Cmd.Env = append(os.Environ(), env...) } func (e *ExecCommandProvider) SetStdin(r io.Reader) { e.Cmd.Stdin = r }