44 lines
744 B
Go
44 lines
744 B
Go
package sh
|
|
|
|
import (
|
|
"fmt"
|
|
"io"
|
|
"os/exec"
|
|
)
|
|
|
|
type baseCommand struct {
|
|
*exec.Cmd
|
|
}
|
|
|
|
func (b *baseCommand) SetStdout(writer io.Writer) {
|
|
b.Cmd.Stdout = writer
|
|
}
|
|
|
|
func (b *baseCommand) SetStderr(writer io.Writer) {
|
|
b.Cmd.Stderr = writer
|
|
}
|
|
|
|
func (b *baseCommand) SetWorkingDir(dir string) {
|
|
b.Cmd.Dir = dir
|
|
}
|
|
|
|
func (b *baseCommand) Env() []string {
|
|
return b.Cmd.Environ()
|
|
}
|
|
|
|
func (b *baseCommand) AddEnv(vars map[string]string) {
|
|
if len(vars) == 0 {
|
|
return
|
|
}
|
|
formattedValues := make([]string, 0, len(vars))
|
|
for k, v := range vars {
|
|
formattedValues = append(formattedValues, fmt.Sprintf("%s=%s", k, v))
|
|
}
|
|
|
|
b.Cmd.Env = append(b.Cmd.Env, formattedValues...)
|
|
}
|
|
|
|
func (b *baseCommand) SetStdIn(reader io.Reader) {
|
|
b.Stdin = reader
|
|
}
|