src/util: use GOMODCACHE if available
GOMODCACHE environment variable is available from go1.15.
Updates golang/vscode-go#248
Change-Id: Ic62198dd2b7dcc6be46e7b7208c2499ad5fdc046
Reviewed-on: https://go-review.googlesource.com/c/vscode-go/+/240695
Reviewed-by: Rebecca Stambler <rstambler@golang.org>
diff --git a/src/goInstallTools.ts b/src/goInstallTools.ts
index 3722807..62b22fc 100644
--- a/src/goInstallTools.ts
+++ b/src/goInstallTools.ts
@@ -354,7 +354,7 @@
}
return new Promise<void>((resolve, reject) => {
- cp.execFile(goRuntimePath, ['env', 'GOPATH', 'GOROOT', 'GOPROXY', 'GOBIN'], (err, stdout, stderr) => {
+ cp.execFile(goRuntimePath, ['env', 'GOPATH', 'GOROOT', 'GOPROXY', 'GOBIN', 'GOMODCACHE'], (err, stdout, stderr) => {
if (err) {
return reject();
}
@@ -371,6 +371,9 @@
if (!process.env['GOBIN'] && envOutput[3] && envOutput[3].trim()) {
process.env['GOBIN'] = envOutput[3].trim();
}
+ if (!process.env['GOMODCACHE']) {
+ process.env['GOMODCACHE'] = envOutput[4].trim();
+ }
// cgo, gopls, and other underlying tools will inherit the environment and attempt
// to locate 'go' from the PATH env var.
diff --git a/src/util.ts b/src/util.ts
index fc24810..ec2e6df 100644
--- a/src/util.ts
+++ b/src/util.ts
@@ -492,6 +492,9 @@
}
export function getModuleCache(): string {
+ if (process.env['GOMODCACHE']) {
+ return process.env['GOMODCACHE'];
+ }
if (currentGopath) {
return path.join(currentGopath.split(path.delimiter)[0], 'pkg', 'mod');
}