aboutsummaryrefslogtreecommitdiffhomepage
path: root/modules/client.go
diff options
context:
space:
mode:
Diffstat (limited to 'modules/client.go')
-rw-r--r--modules/client.go29
1 files changed, 16 insertions, 13 deletions
diff --git a/modules/client.go b/modules/client.go
index fcb5957c3..1924cd5b4 100644
--- a/modules/client.go
+++ b/modules/client.go
@@ -28,6 +28,7 @@ import (
"strings"
"time"
+ "github.com/gohugoio/hugo/common/collections"
"github.com/gohugoio/hugo/common/hexec"
hglob "github.com/gohugoio/hugo/hugofs/glob"
@@ -79,7 +80,7 @@ func NewClient(cfg ClientConfig) *Client {
goModFilename = n
}
- env := os.Environ()
+ var env []string
mcfg := cfg.ModuleConfig
config.SetEnvVars(&env,
@@ -87,12 +88,9 @@ func NewClient(cfg ClientConfig) *Client {
"GO111MODULE", "on",
"GOPROXY", mcfg.Proxy,
"GOPRIVATE", mcfg.Private,
- "GONOPROXY", mcfg.NoProxy)
-
- if cfg.CacheDir != "" {
- // Module cache stored below $GOPATH/pkg
- config.SetEnvVars(&env, "GOPATH", cfg.CacheDir)
- }
+ "GONOPROXY", mcfg.NoProxy,
+ "GOPATH", cfg.CacheDir,
+ )
logger := cfg.Logger
if logger == nil {
@@ -609,16 +607,19 @@ func (c *Client) runGo(
}
stderr := new(bytes.Buffer)
- cmd, err := hexec.SafeCommandContext(ctx, "go", args...)
+
+ argsv := collections.StringSliceToInterfaceSlice(args)
+ argsv = append(argsv, hexec.WithEnviron(c.environ))
+ argsv = append(argsv, hexec.WithStderr(io.MultiWriter(stderr, os.Stderr)))
+ argsv = append(argsv, hexec.WithStdout(stdout))
+ argsv = append(argsv, hexec.WithDir(c.ccfg.WorkingDir))
+ argsv = append(argsv, hexec.WithContext(ctx))
+
+ cmd, err := c.ccfg.Exec.New("go", argsv...)
if err != nil {
return err
}
- cmd.Env = c.environ
- cmd.Dir = c.ccfg.WorkingDir
- cmd.Stdout = stdout
- cmd.Stderr = io.MultiWriter(stderr, os.Stderr)
-
if err := cmd.Run(); err != nil {
if ee, ok := err.(*exec.Error); ok && ee.Err == exec.ErrNotFound {
c.goBinaryStatus = goBinaryStatusNotFound
@@ -727,6 +728,8 @@ type ClientConfig struct {
// Eg. "production"
Environment string
+ Exec *hexec.Exec
+
CacheDir string // Module cache
ModuleConfig Config
}