Skip to content

Commit 7f2a16f

Browse files
committed
cmd/go: update PWD variable for 'go generate'
Most subprocess invocations in the go command use base.AppendPWD to append an accurate value of PWD to the command's environment, which can speed up calls like os.Getwd and also help to provide less-confusing output from scripts. Update `go generate` to do so. Fixes #43862 Change-Id: I3b756f1532b2d922f7d74fd86414d5567a0122c0
1 parent 000fa98 commit 7f2a16f

File tree

2 files changed

+11
-2
lines changed

2 files changed

+11
-2
lines changed

src/cmd/go/internal/generate/generate.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -334,6 +334,7 @@ func (g *Generator) setEnv() {
334334
"GOPACKAGE=" + g.pkg,
335335
"DOLLAR=" + "$",
336336
}
337+
g.env = base.AppendPWD(g.env, g.dir)
337338
}
338339

339340
// split breaks the line into words, evaluating quoted
@@ -448,7 +449,7 @@ func (g *Generator) exec(words []string) {
448449
cmd.Stderr = os.Stderr
449450
// Run the command in the package directory.
450451
cmd.Dir = g.dir
451-
cmd.Env = base.AppendPWD(str.StringList(cfg.OrigEnv, g.env), cmd.Dir)
452+
cmd.Env = str.StringList(cfg.OrigEnv, g.env)
452453
err := cmd.Run()
453454
if err != nil {
454455
g.errorf("running %q: %s", words[0], err)

src/cmd/go/testdata/script/generate.txt

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,10 @@ stdout 'yes' # flag.go should select yes
2626
go generate './generate/env_test.go'
2727
stdout 'main_test'
2828

29+
# Test go generate provides the right "$PWD"
30+
go generate './generate/env_pwd.go'
31+
stdout $WORK'/gopath/src/generate'
32+
2933
-- echo.go --
3034
package main
3135

@@ -88,4 +92,8 @@ package p
8892
-- generate/env_test.go --
8993
package main_test
9094

91-
//go:generate echo $GOPACKAGE
95+
//go:generate echo $GOPACKAGE
96+
-- generate/env_pwd.go --
97+
package p
98+
99+
//go:generate echo $PWD

0 commit comments

Comments
 (0)