buf.WriteString(bugHeader)
printGoVersion(&buf)
buf.WriteString("### Does this issue reproduce with the latest release?\n\n\n")
- printEnvDetails(&buf)
+ printEnvDetails(modload.LoaderState, &buf)
buf.WriteString(bugFooter)
body := buf.String()
fmt.Fprintf(w, "\n")
}
-func printEnvDetails(w io.Writer) {
+func printEnvDetails(loaderstate *modload.State, w io.Writer) {
fmt.Fprintf(w, "### What operating system and processor architecture are you using (`go env`)?\n\n")
fmt.Fprintf(w, "<details><summary><code>go env</code> Output</summary><br><pre>\n")
fmt.Fprintf(w, "$ go env\n")
- printGoEnv(w)
+ printGoEnv(loaderstate, w)
printGoDetails(w)
printOSDetails(w)
printCDetails(w)
fmt.Fprintf(w, "</pre></details>\n\n")
}
-func printGoEnv(w io.Writer) {
+func printGoEnv(loaderstate *modload.State, w io.Writer) {
env := envcmd.MkEnv()
- env = append(env, envcmd.ExtraEnvVars()...)
+ env = append(env, envcmd.ExtraEnvVars(loaderstate)...)
env = append(env, envcmd.ExtraEnvVarsCostly()...)
envcmd.PrintEnv(w, env, false)
}
}
// ExtraEnvVars returns environment variables that should not leak into child processes.
-func ExtraEnvVars() []cfg.EnvVar {
+func ExtraEnvVars(loaderstate *modload.State) []cfg.EnvVar {
gomod := ""
- modload.Init(modload.LoaderState)
- if modload.HasModRoot(modload.LoaderState) {
- gomod = modload.ModFilePath()
- } else if modload.Enabled(modload.LoaderState) {
+ modload.Init(loaderstate)
+ if modload.HasModRoot(loaderstate) {
+ gomod = modload.ModFilePath(loaderstate)
+ } else if modload.Enabled(loaderstate) {
gomod = os.DevNull
}
- modload.InitWorkfile(modload.LoaderState)
- gowork := modload.WorkFilePath(modload.LoaderState)
+ modload.InitWorkfile(loaderstate)
+ gowork := modload.WorkFilePath(loaderstate)
// As a special case, if a user set off explicitly, report that in GOWORK.
if cfg.Getenv("GOWORK") == "off" {
gowork = "off"
}
env := cfg.CmdEnv
- env = append(env, ExtraEnvVars()...)
+ env = append(env, ExtraEnvVars(modload.LoaderState)...)
if err := fsys.Init(); err != nil {
base.Fatal(err)
if len(args) == 1 {
gomod = args[0]
} else {
- gomod = modload.ModFilePath()
+ gomod = modload.ModFilePath(modload.LoaderState)
}
if *editModule != "" {
// restricted to matching packages in the main module.
pkgPattern, mainModule := modload.LoaderState.MainModules.DirImportPath(modload.LoaderState, ctx, q.pattern)
if pkgPattern == "." {
- modload.MustHaveModRoot()
+ modload.MustHaveModRoot(modload.LoaderState)
versions := modload.LoaderState.MainModules.Versions()
modRoots := make([]string, 0, len(versions))
for _, m := range versions {
return errSet(fmt.Errorf("no package to get in current directory"))
}
if !q.isWildcard() {
- modload.MustHaveModRoot()
+ modload.MustHaveModRoot(modload.LoaderState)
return errSet(fmt.Errorf("%s%s is not a package in module rooted at %s", q.pattern, absDetail, modload.LoaderState.MainModules.ModRoot(mainModule)))
}
search.WarnUnmatched([]*search.Match{match})
// MustHaveModRoot checks that a main module or main modules are present,
// and calls base.Fatalf if there are no main modules.
-func MustHaveModRoot() {
- Init(LoaderState)
- if !HasModRoot(LoaderState) {
- die(LoaderState)
+func MustHaveModRoot(loaderstate *State) {
+ Init(loaderstate)
+ if !HasModRoot(loaderstate) {
+ die(loaderstate)
}
}
// ModFilePath returns the path that would be used for the go.mod
// file, if in module mode. ModFilePath calls base.Fatalf if there is no main
// module, even if -modfile is set.
-func ModFilePath() string {
- MustHaveModRoot()
+func ModFilePath(loaderstate *State) string {
+ MustHaveModRoot(loaderstate)
return modFilePath(findModuleRoot(base.Cwd()))
}