1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
|
package git
import (
"bytes"
"fmt"
"os/exec"
"github.com/cli/safeexec"
)
func Exec(args ...string) (stdOut, stdErr bytes.Buffer, err error) {
path, err := path()
if err != nil {
err = fmt.Errorf("could not find git executable in PATH. error: %w", err)
return
}
return run(path, nil, args...)
}
func path() (string, error) {
return safeexec.LookPath("git")
}
func run(path string, env []string, args ...string) (stdOut, stdErr bytes.Buffer, err error) {
cmd := exec.Command(path, args...)
cmd.Stdout = &stdOut
cmd.Stderr = &stdErr
if env != nil {
cmd.Env = env
}
err = cmd.Run()
if err != nil {
err = fmt.Errorf("failed to run git: %s. error: %w", stdErr.String(), err)
return
}
return
}
|