mirror of https://github.com/golang/go.git
cmd/go: make 'go mod why' require a main module
Updates #32027 Change-Id: Ifc9427f35188c3fd356917d8510f3e01866ebca8 Reviewed-on: https://go-review.googlesource.com/c/go/+/205065 Run-TryBot: Bryan C. Mills <bcmills@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Jay Conrod <jayconrod@google.com>
This commit is contained in:
parent
95149147d8
commit
a9c0cc6f67
|
|
@ -373,12 +373,14 @@ func runGet(cmd *base.Command, args []string) {
|
|||
|
||||
default:
|
||||
// The argument is a package or module path.
|
||||
if pkgs := modload.TargetPackages(path); len(pkgs) != 0 {
|
||||
// The path is in the main module. Nothing to query.
|
||||
if vers != "upgrade" && vers != "patch" {
|
||||
base.Errorf("go get %s: can't request explicit version of path in main module", arg)
|
||||
if modload.HasModRoot() {
|
||||
if pkgs := modload.TargetPackages(path); len(pkgs) != 0 {
|
||||
// The path is in the main module. Nothing to query.
|
||||
if vers != "upgrade" && vers != "patch" {
|
||||
base.Errorf("go get %s: can't request explicit version of path in main module", arg)
|
||||
}
|
||||
continue
|
||||
}
|
||||
continue
|
||||
}
|
||||
|
||||
first := path
|
||||
|
|
|
|||
|
|
@ -406,6 +406,10 @@ func loadAll(testAll bool) []string {
|
|||
// matching pattern, which may be relative to the working directory, under all
|
||||
// build tag settings.
|
||||
func TargetPackages(pattern string) []string {
|
||||
// TargetPackages is relative to the main module, so ensure that the main
|
||||
// module is a thing that can contain packages.
|
||||
ModRoot()
|
||||
|
||||
return matchPackages(pattern, imports.AnyTags(), false, []module.Version{Target})
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -67,10 +67,9 @@ go mod graph
|
|||
! stdout .
|
||||
! stderr .
|
||||
|
||||
# 'go mod why' should report that nothing is a dependency.
|
||||
go mod why -m example.com/version
|
||||
stdout 'does not need'
|
||||
|
||||
# 'go mod why' should fail, since there is no main module to depend on anything.
|
||||
! go mod why -m example.com/version
|
||||
stderr 'cannot find main module'
|
||||
|
||||
# 'go mod edit', 'go mod tidy', and 'go mod fmt' should fail:
|
||||
# there is no go.mod file to edit.
|
||||
|
|
|
|||
Loading…
Reference in New Issue