1
0
mirror of https://github.com/golang/go synced 2024-11-16 21:04:45 -07:00

cmd/go: report a helpful error when there are no modules in workspace

The current error message that no go.mod files were found is not
helpful, especially when a go.mod file exists in the current directory.

Fixes #49594

Change-Id: I750475ce8654eeb3e0a2857d5a2de1a9c6ede415
Reviewed-on: https://go-review.googlesource.com/c/go/+/365319
Trust: Michael Matloob <matloob@golang.org>
Run-TryBot: Michael Matloob <matloob@golang.org>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Bryan C. Mills <bcmills@google.com>
This commit is contained in:
Michael Matloob 2021-11-19 16:09:52 -05:00
parent 6275b54a2a
commit cd0bf38966
4 changed files with 38 additions and 2 deletions

View File

@ -1371,7 +1371,7 @@
//
// Workspace maintenance
//
// Go workspace provides access to operations on worskpaces.
// Go workspace provides access to operations on workspaces.
//
// Note that support for workspaces is built into many other commands,
// not just 'go work'.
@ -1379,6 +1379,16 @@
// See 'go help modules' for information about Go's module system of
// which workspaces are a part.
//
// A workspace is specified by a go.work file that specifies a set of
// module directories with the "use" directive. These modules are used
// as root modules by the go command for builds and related operations.
// A workspace that does not specify modules to be used cannot be used
// to do builds from local code.
//
// To determine whether the go command is operating in workspace mode,
// use the "go env GOWORK" command. This will specify the workspace
// file being used.
//
// Usage:
//
// go work <command> [arguments]

View File

@ -525,6 +525,9 @@ func die() {
if cfg.Getenv("GO111MODULE") == "off" {
base.Fatalf("go: modules disabled by GO111MODULE=off; see 'go help modules'")
}
if inWorkspaceMode() {
base.Fatalf("go: no modules were found in the current workspace; see 'go help work'")
}
if dir, name := findAltConfig(base.Cwd()); dir != "" {
rel, err := filepath.Rel(base.Cwd(), dir)
if err != nil {

View File

@ -12,13 +12,23 @@ import (
var CmdWork = &base.Command{
UsageLine: "go work",
Short: "workspace maintenance",
Long: `Go workspace provides access to operations on worskpaces.
Long: `Go workspace provides access to operations on workspaces.
Note that support for workspaces is built into many other commands,
not just 'go work'.
See 'go help modules' for information about Go's module system of
which workspaces are a part.
A workspace is specified by a go.work file that specifies a set of
module directories with the "use" directive. These modules are used
as root modules by the go command for builds and related operations.
A workspace that does not specify modules to be used cannot be used
to do builds from local code.
To determine whether the go command is operating in workspace mode,
use the "go env GOWORK" command. This will specify the workspace
file being used.
`,
Commands: []*base.Command{

View File

@ -0,0 +1,13 @@
! go build .
stderr 'go: no modules were found in the current workspace; see ''go help work'''
-- go.work --
go 1.18
-- go.mod --
go 1.18
module foo
-- foo.go --
package main
func main() {}