summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--main.go27
1 files changed, 20 insertions, 7 deletions
diff --git a/main.go b/main.go
index 8096ae5..8ce0254 100644
--- a/main.go
+++ b/main.go
@@ -124,6 +124,8 @@ See also: go build, go install, go clean.
 
 	platforms := plBuilder.Build()
 
+	environ := parseEnvironment(os.Environ())
+
 	var (
 		parallelJobs = runtime.NumCPU()
 		sem          = semaphore.NewWeighted(int64(parallelJobs))
@@ -143,7 +145,7 @@ See also: go build, go install, go clean.
 
 			go func(platform Platform, pkg string) {
 				defer sem.Release(1)
-				err := build(ctx, platform, pkg)
+				err := build(ctx, environ, platform, pkg)
 
 				if err != nil {
 					errored = true
@@ -162,20 +164,21 @@ See also: go build, go install, go clean.
 	}
 }
 
-func build(ctx context.Context, platform Platform, pkg string) error {
+func build(ctx context.Context, environ kvs, platform Platform, pkg string) error {
 	name := fmt.Sprintf("%s-%s-%s", filepath.Base(pkg), platform.OS, platform.Arch)
 
 	if platform.OS == OS_WINDOWS {
 		name += ".exe"
 	}
 
-	env := kvs{
-		"GOOS":   string(platform.OS),
-		"GOARCH": string(platform.Arch),
-		"GOROOT": os.Getenv("GOROOT"),
-		"GOPATH": os.Getenv("GOPATH"),
+	env := kvs{}
+	for key, val := range environ {
+		env[key] = val
 	}
 
+	env["GOOS"] = string(platform.OS)
+	env["GOARCH"] = string(platform.Arch)
+
 	if cgo {
 		env["CGO_ENABLED"] = "1"
 	} else {
@@ -244,3 +247,13 @@ func parsePlatforms(plBuilder *PlatformBuilder, fields []string) *PlatformBuilde
 
 	return plBuilder
 }
+
+func parseEnvironment(environ []string) kvs {
+	env := kvs{}
+	for _, s := range environ {
+		split := strings.SplitN(s, "=", 2)
+		env[split[0]] = split[1]
+	}
+
+	return env
+}