aboutsummaryrefslogtreecommitdiff
path: root/go/tools/go_bin_runner/main.go
blob: bca4f7fca5b79e04018d71b9d14e19a4e62b4af1 (plain)
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
38
39
40
41
package main

import (
	"log"
	"os"
	"path/filepath"
	"strings"

	"github.com/bazelbuild/rules_go/go/runfiles"
)

var GoBinRlocationPath = "not set"

func main() {
	goBin, err := runfiles.Rlocation(GoBinRlocationPath)
	if err != nil {
		log.Fatal(err)
	}
	// The go binary lies at $GOROOT/bin/go.
	goRoot, err := filepath.Abs(filepath.Dir(filepath.Dir(goBin)))
	if err != nil {
		log.Fatal(err)
	}

	env := os.Environ()
	var filteredEnv []string
	for i := 0; i < len(env); i++ {
		if !strings.HasPrefix(env[i], "GOROOT=") {
			filteredEnv = append(filteredEnv, env[i])
		}
	}
	filteredEnv = append(filteredEnv, "GOROOT="+goRoot)

	err = os.Chdir(os.Getenv("BUILD_WORKING_DIRECTORY"))
	if err != nil {
		log.Fatal(err)
	}

	args := append([]string{goBin}, os.Args[1:]...)
	log.Fatal(ReplaceWithProcess(args, filteredEnv))
}