xref: /aosp_15_r20/external/bazelbuild-rules_go/go/tools/go_bin_runner/main.go (revision 9bb1b549b6a84214c53be0924760be030e66b93a)
1package main
2
3import (
4	"log"
5	"os"
6	"path/filepath"
7	"strings"
8
9	"github.com/bazelbuild/rules_go/go/runfiles"
10)
11
12var GoBinRlocationPath = "not set"
13
14func main() {
15	goBin, err := runfiles.Rlocation(GoBinRlocationPath)
16	if err != nil {
17		log.Fatal(err)
18	}
19	// The go binary lies at $GOROOT/bin/go.
20	goRoot, err := filepath.Abs(filepath.Dir(filepath.Dir(goBin)))
21	if err != nil {
22		log.Fatal(err)
23	}
24
25	env := os.Environ()
26	var filteredEnv []string
27	for i := 0; i < len(env); i++ {
28		if !strings.HasPrefix(env[i], "GOROOT=") {
29			filteredEnv = append(filteredEnv, env[i])
30		}
31	}
32	filteredEnv = append(filteredEnv, "GOROOT="+goRoot)
33
34	err = os.Chdir(os.Getenv("BUILD_WORKING_DIRECTORY"))
35	if err != nil {
36		log.Fatal(err)
37	}
38
39	args := append([]string{goBin}, os.Args[1:]...)
40	log.Fatal(ReplaceWithProcess(args, filteredEnv))
41}
42