mirror of https://github.com/golang/go.git
cmd/go: add a better error message when in a module outside workspace
When the user is trying to list or build a package in a module that's outside of the workspace provide a more clear message hinting to the user that they can add the module to the workspace using go work use. Fixes #51604 Change-Id: I1202ecb2f22fd6351bfdec88ed613b8167687fb7 Reviewed-on: https://go-review.googlesource.com/c/go/+/400014 Run-TryBot: Michael Matloob <matloob@golang.org> Reviewed-by: Michael Matloob <matloob@golang.org> Auto-Submit: Michael Matloob <matloob@golang.org> Reviewed-by: Bryan Mills <bcmills@google.com> TryBot-Result: Gopher Robot <gobot@golang.org>
This commit is contained in:
parent
5b32a6f179
commit
f95db21332
|
|
@ -605,11 +605,13 @@ func resolveLocalPackage(ctx context.Context, dir string, rs *Requirements) (str
|
|||
|
||||
pkg := pathInModuleCache(ctx, absDir, rs)
|
||||
if pkg == "" {
|
||||
scope := "main module or its selected dependencies"
|
||||
if inWorkspaceMode() {
|
||||
scope = "modules listed in go.work or their selected dependencies"
|
||||
if mr := findModuleRoot(absDir); mr != "" {
|
||||
return "", fmt.Errorf("directory %s is contained in a module that is not one of the workspace modules listed in go.work. You can add the module to the workspace using go work use %s", base.ShortPath(absDir), base.ShortPath(mr))
|
||||
}
|
||||
return "", fmt.Errorf("directory %s outside modules listed in go.work or their selected dependencies", base.ShortPath(absDir))
|
||||
}
|
||||
return "", fmt.Errorf("directory %s outside %s", base.ShortPath(absDir), scope)
|
||||
return "", fmt.Errorf("directory %s outside main module or its selected dependencies", base.ShortPath(absDir))
|
||||
}
|
||||
return pkg, nil
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,8 +6,8 @@
|
|||
! go list ./...
|
||||
stderr 'pattern ./...: directory prefix . does not contain modules listed in go.work or their selected dependencies'
|
||||
|
||||
! go list ./a
|
||||
stderr 'directory a outside modules listed in go.work'
|
||||
! go list ./a/c
|
||||
stderr 'directory a[\\/]c is contained in a module that is not one of the workspace modules listed in go.work. You can add the module to the workspace using go work use a'
|
||||
|
||||
-- go.work --
|
||||
go 1.18
|
||||
|
|
@ -19,6 +19,8 @@ module example.com/a
|
|||
go 1.18
|
||||
-- a/a.go --
|
||||
package a
|
||||
-- a/c/c.go --
|
||||
package c
|
||||
-- b/go.mod --
|
||||
module example.com/b
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue