diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/cmd/go/generate.go | 17 | ||||
| -rw-r--r-- | src/cmd/go/generate_test.go | 3 |
2 files changed, 19 insertions, 1 deletions
diff --git a/src/cmd/go/generate.go b/src/cmd/go/generate.go index 34b10314d2..5859e9eefd 100644 --- a/src/cmd/go/generate.go +++ b/src/cmd/go/generate.go @@ -13,6 +13,7 @@ import ( "os" "os/exec" "path/filepath" + "runtime" "strconv" "strings" "unicode" @@ -48,6 +49,10 @@ quoted string appears a single argument to the generator. Go generate sets several variables when it runs the generator: + $GOARCH + The execution architecture (arm, amd64, etc.) + $GOOS + The execution operating system (linux, windows, etc.) $GOFILE The base name of the file. $GOPACKAGE @@ -287,6 +292,10 @@ func (g *Generator) expandEnv(word string) string { envVar := word[i+1 : i+w] var sub string switch envVar { + case "GOARCH": + sub = runtime.GOARCH + case "GOOS": + sub = runtime.GOOS case "GOFILE": sub = g.file case "GOPACKAGE": @@ -332,7 +341,13 @@ func (g *Generator) exec(words []string) { cmd.Stderr = os.Stderr // Run the command in the package directory. cmd.Dir = g.dir - cmd.Env = mergeEnvLists([]string{"GOFILE=" + g.file, "GOPACKAGE=" + g.pkg}, os.Environ()) + env := []string{ + "GOARCH=" + runtime.GOARCH, + "GOOS=" + runtime.GOOS, + "GOFILE=" + g.file, + "GOPACKAGE=" + g.pkg, + } + cmd.Env = mergeEnvLists(env, os.Environ()) err := cmd.Run() if err != nil { g.errorf("running %q: %s", words[0], err) diff --git a/src/cmd/go/generate_test.go b/src/cmd/go/generate_test.go index 6be8157636..881a8fe9b6 100644 --- a/src/cmd/go/generate_test.go +++ b/src/cmd/go/generate_test.go @@ -20,7 +20,10 @@ var splitTests = []splitTest{ {"x", []string{"x"}}, {" a b\tc ", []string{"a", "b", "c"}}, {` " a " `, []string{" a "}}, + {"$GOARCH", []string{runtime.GOARCH}}, + {"$GOOS", []string{runtime.GOOS}}, {"$GOFILE", []string{"proc.go"}}, + {"$GOPACKAGE", []string{"sys"}}, {"a $XXNOTDEFINEDXX b", []string{"a", "", "b"}}, {"/$XXNOTDEFINED/", []string{"//"}}, {"$GOARCH", []string{runtime.GOARCH}}, |
