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:
parent
6275b54a2a
commit
cd0bf38966
@ -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]
|
||||
|
@ -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 {
|
||||
|
@ -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{
|
||||
|
13
src/cmd/go/testdata/script/work_build_no_modules.txt
vendored
Normal file
13
src/cmd/go/testdata/script/work_build_no_modules.txt
vendored
Normal 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() {}
|
Loading…
Reference in New Issue
Block a user