garm/util/exec/exec.go
Gabriel Adrian Samfira 0b70a30944 Add external providers and an example
Add the ability to externalize providers to a binary on disk.
2022-05-09 17:11:47 +00:00

25 lines
567 B
Go

package exec
import (
"bytes"
"context"
"os/exec"
"github.com/pkg/errors"
)
func Exec(ctx context.Context, providerBin string, stdinData []byte, environ []string) ([]byte, error) {
stdout := &bytes.Buffer{}
stderr := &bytes.Buffer{}
c := exec.CommandContext(ctx, providerBin)
c.Env = environ
c.Stdin = bytes.NewBuffer(stdinData)
c.Stdout = stdout
c.Stderr = stderr
if err := c.Run(); err != nil {
return nil, errors.Wrapf(err, "provider binary failed with stdout: %s; stderr: %s", stdout.String(), stderr.String())
}
return stdout.Bytes(), nil
}