aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/go/internal/envcmd/env.go
diff options
context:
space:
mode:
authorManlio Perillo <manlio.perillo@gmail.com>2021-04-27 14:48:20 +0200
committerBryan C. Mills <bcmills@google.com>2021-04-28 15:47:34 +0000
commit12af403624baa87700fe05db3e21c26e410871fd (patch)
tree768e440e579369aa81bfb7036b64ec3be45b64df /src/cmd/go/internal/envcmd/env.go
parent5c69cb2a5bc33ae2c8af598a53f4337bd1e77508 (diff)
downloadgo-12af403624baa87700fe05db3e21c26e410871fd.tar.gz
go-12af403624baa87700fe05db3e21c26e410871fd.zip
cmd/go/internal/bug: use envcmd instead of go env
Add the printGoEnv function to print the go environment variables, using the envcmd package instead of invoking go env. Add the PrintEnv function to the envcmd package, to avoid duplicating code. Updates #45803 Change-Id: I38d5b936c0ebb16e741ffbee4309b95d6d0ecc6c Reviewed-on: https://go-review.googlesource.com/c/go/+/314230 Reviewed-by: Bryan C. Mills <bcmills@google.com> Reviewed-by: Michael Matloob <matloob@golang.org> Run-TryBot: Bryan C. Mills <bcmills@google.com> TryBot-Result: Go Bot <gobot@golang.org>
Diffstat (limited to 'src/cmd/go/internal/envcmd/env.go')
-rw-r--r--src/cmd/go/internal/envcmd/env.go20
1 files changed, 13 insertions, 7 deletions
diff --git a/src/cmd/go/internal/envcmd/env.go b/src/cmd/go/internal/envcmd/env.go
index aad5d704e5..8dbb8af1e7 100644
--- a/src/cmd/go/internal/envcmd/env.go
+++ b/src/cmd/go/internal/envcmd/env.go
@@ -10,6 +10,7 @@ import (
"encoding/json"
"fmt"
"go/build"
+ "io"
"os"
"path/filepath"
"runtime"
@@ -347,27 +348,32 @@ func runEnv(ctx context.Context, cmd *base.Command, args []string) {
return
}
+ PrintEnv(os.Stdout, env)
+}
+
+// PrintEnv prints the environment variables to w.
+func PrintEnv(w io.Writer, env []cfg.EnvVar) {
for _, e := range env {
if e.Name != "TERM" {
switch runtime.GOOS {
default:
- fmt.Printf("%s=\"%s\"\n", e.Name, e.Value)
+ fmt.Fprintf(w, "%s=\"%s\"\n", e.Name, e.Value)
case "plan9":
if strings.IndexByte(e.Value, '\x00') < 0 {
- fmt.Printf("%s='%s'\n", e.Name, strings.ReplaceAll(e.Value, "'", "''"))
+ fmt.Fprintf(w, "%s='%s'\n", e.Name, strings.ReplaceAll(e.Value, "'", "''"))
} else {
v := strings.Split(e.Value, "\x00")
- fmt.Printf("%s=(", e.Name)
+ fmt.Fprintf(w, "%s=(", e.Name)
for x, s := range v {
if x > 0 {
- fmt.Printf(" ")
+ fmt.Fprintf(w, " ")
}
- fmt.Printf("%s", s)
+ fmt.Fprintf(w, "%s", s)
}
- fmt.Printf(")\n")
+ fmt.Fprintf(w, ")\n")
}
case "windows":
- fmt.Printf("set %s=%s\n", e.Name, e.Value)
+ fmt.Fprintf(w, "set %s=%s\n", e.Name, e.Value)
}
}
}