35 lines
692 B
Go
35 lines
692 B
Go
// Copyright 2024 Matthew Rich <matthewrich.conf@gmail.com>. 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
|
|
}
|