From c4c37547b12f113d07b987881a81c1dbc754cd66 Mon Sep 17 00:00:00 2001 From: Jay Conrod Date: Wed, 23 Oct 2019 17:50:22 -0400 Subject: [PATCH] cmd/go/internal/modload: remove cwd global base.Cwd should be used instead. Change-Id: I3dbdecf745b0823160984cc942c883dc04c91d7b Reviewed-on: https://go-review.googlesource.com/c/go/+/203037 Run-TryBot: Jay Conrod TryBot-Result: Gobot Gobot Reviewed-by: Bryan C. Mills --- src/cmd/go/internal/modload/init.go | 39 +++++++++++++---------------- src/cmd/go/internal/modload/load.go | 4 +-- 2 files changed, 20 insertions(+), 23 deletions(-) diff --git a/src/cmd/go/internal/modload/init.go b/src/cmd/go/internal/modload/init.go index 2f15093158..393121df6c 100644 --- a/src/cmd/go/internal/modload/init.go +++ b/src/cmd/go/internal/modload/init.go @@ -34,7 +34,6 @@ import ( ) var ( - cwd string // TODO(bcmills): Is this redundant with base.Cwd? mustUseModules = false initialized bool @@ -132,17 +131,11 @@ func Init() { os.Setenv("GIT_SSH_COMMAND", "ssh -o ControlMaster=no") } - var err error - cwd, err = os.Getwd() - if err != nil { - base.Fatalf("go: %v", err) - } - if CmdModInit { // Running 'go mod init': go.mod will be created in current directory. - modRoot = cwd + modRoot = base.Cwd } else { - modRoot = findModuleRoot(cwd) + modRoot = findModuleRoot(base.Cwd) if modRoot == "" { if !mustUseModules { // GO111MODULE is 'auto', and we can't find a module root. @@ -272,18 +265,16 @@ func die() { if cfg.Getenv("GO111MODULE") == "off" { base.Fatalf("go: modules disabled by GO111MODULE=off; see 'go help modules'") } - if cwd != "" { - if dir, name := findAltConfig(cwd); dir != "" { - rel, err := filepath.Rel(cwd, dir) - if err != nil { - rel = dir - } - cdCmd := "" - if rel != "." { - cdCmd = fmt.Sprintf("cd %s && ", rel) - } - base.Fatalf("go: cannot find main module, but found %s in %s\n\tto create a module there, run:\n\t%sgo mod init", name, dir, cdCmd) + if dir, name := findAltConfig(base.Cwd); dir != "" { + rel, err := filepath.Rel(base.Cwd, dir) + if err != nil { + rel = dir + } + cdCmd := "" + if rel != "." { + cdCmd = fmt.Sprintf("cd %s && ", rel) } + base.Fatalf("go: cannot find main module, but found %s in %s\n\tto create a module there, run:\n\t%sgo mod init", name, dir, cdCmd) } base.Fatalf("go: cannot find main module; see 'go help modules'") } @@ -370,7 +361,7 @@ func AllowMissingModuleImports() { func modFileToBuildList() { Target = modFile.Module.Mod targetPrefix = Target.Path - if rel := search.InDir(cwd, cfg.GOROOTsrc); rel != "" { + if rel := search.InDir(base.Cwd, cfg.GOROOTsrc); rel != "" { targetInGorootSrc = true if Target.Path == "std" { targetPrefix = "" @@ -584,6 +575,9 @@ var altConfigs = []string{ } func findModuleRoot(dir string) (root string) { + if dir == "" { + panic("dir not set") + } dir = filepath.Clean(dir) // Look for enclosing go.mod. @@ -601,6 +595,9 @@ func findModuleRoot(dir string) (root string) { } func findAltConfig(dir string) (root, name string) { + if dir == "" { + panic("dir not set") + } dir = filepath.Clean(dir) for { for _, name := range altConfigs { diff --git a/src/cmd/go/internal/modload/load.go b/src/cmd/go/internal/modload/load.go index a9f711733c..5f28d7cf14 100644 --- a/src/cmd/go/internal/modload/load.go +++ b/src/cmd/go/internal/modload/load.go @@ -95,7 +95,7 @@ func ImportPathsQuiet(patterns []string, tags map[string]bool) []*search.Match { for _, pkg := range pkgs { dir := pkg if !filepath.IsAbs(dir) { - dir = filepath.Join(cwd, pkg) + dir = filepath.Join(base.Cwd, pkg) } else { dir = filepath.Clean(dir) } @@ -321,7 +321,7 @@ func DirImportPath(dir string) string { } if !filepath.IsAbs(dir) { - dir = filepath.Join(cwd, dir) + dir = filepath.Join(base.Cwd, dir) } else { dir = filepath.Clean(dir) } -- 2.48.1