"github.com/gohugoio/hugo/common/herrors"
"github.com/gohugoio/hugo/common/hexec"
"github.com/gohugoio/hugo/common/loggers"
+ "github.com/gohugoio/hugo/config"
hglob "github.com/gohugoio/hugo/hugofs/glob"
"github.com/gohugoio/hugo/hugofs/files"
- "github.com/gohugoio/hugo/config"
-
"golang.org/x/mod/module"
"github.com/gohugoio/hugo/common/hugio"
goModFilename = n
}
- var env []string
- mcfg := cfg.ModuleConfig
-
- config.SetEnvVars(&env,
- "PWD", cfg.WorkingDir,
- "GO111MODULE", "on",
- "GOPROXY", mcfg.Proxy,
- "GOPRIVATE", mcfg.Private,
- "GONOPROXY", mcfg.NoProxy,
- "GOPATH", cfg.CacheDir,
- "GOWORK", mcfg.Workspace, // Requires Go 1.18, see https://tip.golang.org/doc/go1.18
- // GOCACHE was introduced in Go 1.15. This matches the location derived from GOPATH above.
- "GOCACHE", filepath.Join(cfg.CacheDir, "pkg", "mod"),
- )
-
logger := cfg.Logger
if logger == nil {
logger = loggers.NewDefault()
ccfg: cfg,
logger: logger,
noVendor: noVendor,
- moduleConfig: mcfg,
- environ: env,
+ moduleConfig: cfg.ModuleConfig,
+ environ: cfg.toEnv(),
GoModulesFilename: goModFilename,
}
}
return c.IgnoreVendor != nil && c.IgnoreVendor.Match(path)
}
+func (cfg ClientConfig) toEnv() []string {
+ mcfg := cfg.ModuleConfig
+ var env []string
+ keyVals := []string{
+ "PWD", cfg.WorkingDir,
+ "GO111MODULE", "on",
+ "GOPATH", cfg.CacheDir,
+ "GOWORK", mcfg.Workspace, // Requires Go 1.18, see https://tip.golang.org/doc/go1.18
+ // GOCACHE was introduced in Go 1.15. This matches the location derived from GOPATH above.
+ "GOCACHE", filepath.Join(cfg.CacheDir, "pkg", "mod"),
+ }
+
+ if mcfg.Proxy != "" {
+ keyVals = append(keyVals, "GOPROXY", mcfg.Proxy)
+ }
+ if mcfg.Private != "" {
+ keyVals = append(keyVals, "GOPRIVATE", mcfg.Private)
+ }
+ if mcfg.NoProxy != "" {
+ keyVals = append(keyVals, "GONOPROXY", mcfg.NoProxy)
+ }
+ if mcfg.Auth != "" {
+ // GOAUTH was introduced in Go 1.24, see https://tip.golang.org/doc/go1.24.
+ keyVals = append(keyVals, "GOAUTH", mcfg.Auth)
+ }
+
+ config.SetEnvVars(&env, keyVals...)
+
+ return env
+}
+
type goBinaryStatus int
type goModule struct {
gosumSplitter := getModlineSplitter(false)
c.Assert(gosumSplitter("github.com/BurntSushi/toml v0.3.1"), qt.DeepEquals, []string{"github.com/BurntSushi/toml", "v0.3.1"})
}
+
+func TestClientConfigToEnv(t *testing.T) {
+ c := qt.New(t)
+
+ ccfg := ClientConfig{
+ WorkingDir: "/mywork",
+ CacheDir: "/mycache",
+ }
+
+ env := ccfg.toEnv()
+
+ c.Assert(env, qt.DeepEquals, []string{"PWD=/mywork", "GO111MODULE=on", "GOPATH=/mycache", "GOWORK=", filepath.FromSlash("GOCACHE=/mycache/pkg/mod")})
+
+ ccfg = ClientConfig{
+ WorkingDir: "/mywork",
+ CacheDir: "/mycache",
+ ModuleConfig: Config{
+ Proxy: "https://proxy.example.org",
+ Private: "myprivate",
+ NoProxy: "mynoproxy",
+ Workspace: "myworkspace",
+ Auth: "myauth",
+ },
+ }
+
+ env = ccfg.toEnv()
+
+ c.Assert(env, qt.DeepEquals, []string{
+ "PWD=/mywork",
+ "GO111MODULE=on",
+ "GOPATH=/mycache",
+ "GOWORK=myworkspace",
+ filepath.FromSlash("GOCACHE=/mycache/pkg/mod"),
+ "GOPROXY=https://proxy.example.org",
+ "GOPRIVATE=myprivate",
+ "GONOPROXY=mynoproxy",
+ "GOAUTH=myauth",
+ })
+}