blob: 10a7c7a4d0565e1cb61783598cbab83a06f700cb [file]
package bazel
import (
"fmt"
"io"
"log"
"os"
"os/exec"
)
// LocateBazel determines which executable we call through to
func LocateBazel() string {
// When installed in tools/bazel, bazelisk sets this variable
bazelReal, ok := os.LookupEnv("BAZEL_REAL")
if ok {
return bazelReal
}
pathBazelisk, err := exec.LookPath("bazelisk")
if err == nil {
return pathBazelisk
}
pathBazel, err := exec.LookPath("bazel")
if err == nil {
return pathBazel
}
panic("Unable to locate bazel tool to wrap. Looked in $BAZEL_REAL, $PATH")
}
func Spawn(command string) {
bazel := LocateBazel()
cmd := exec.Command(bazel, command)
stdout, err := cmd.StdoutPipe()
if err != nil {
log.Fatal(err)
}
stderr, err := cmd.StderrPipe()
if err != nil {
log.Fatal(err)
}
if err := cmd.Start(); err != nil {
log.Fatal(err)
}
slurpOut, _ := io.ReadAll(stdout)
fmt.Printf("%s\n", slurpOut)
slurpErr, _ := io.ReadAll(stderr)
fmt.Fprintf(os.Stderr, "%s\n", slurpErr)
if err := cmd.Wait(); err != nil {
log.Fatal(err)
}
}