diff options
author | Jay Conrod <jayconrod@google.com> | 2020-05-20 13:51:53 -0400 |
---|---|---|
committer | Jay Conrod <jayconrod@google.com> | 2020-11-17 15:10:45 +0000 |
commit | 0968d2d599189229145b1000cec55d9df47fbc98 (patch) | |
tree | 62ef7070d9d2d52cfa58b2e6f92e79a6e5aa71c6 /src/cmd/go/internal/modget/get.go | |
parent | 3e56bad13b0d287cd77472763fec5e75d9846de6 (diff) | |
download | go-0968d2d599189229145b1000cec55d9df47fbc98.tar.gz go-0968d2d599189229145b1000cec55d9df47fbc98.zip |
cmd/go/internal/modget: clarify error for 'go get' without arguments
If the current directory doesn't contain a package, 'go get' will say
that without additional detail.
If there were no arguments, errors will start with "go get:" instead
of "go get .:".
Fixes #39080
Change-Id: I47366f2a27bce17bd8b79344ad15b8b934a888c9
Reviewed-on: https://go-review.googlesource.com/c/go/+/234681
Run-TryBot: Jay Conrod <jayconrod@google.com>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Bryan C. Mills <bcmills@google.com>
Trust: Jay Conrod <jayconrod@google.com>
Diffstat (limited to 'src/cmd/go/internal/modget/get.go')
-rw-r--r-- | src/cmd/go/internal/modget/get.go | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/src/cmd/go/internal/modget/get.go b/src/cmd/go/internal/modget/get.go index 5b8eebf7cb..0b7f6bf1d5 100644 --- a/src/cmd/go/internal/modget/get.go +++ b/src/cmd/go/internal/modget/get.go @@ -505,6 +505,12 @@ func parseArgs(ctx context.Context, rawArgs []string) []*query { continue } + // If there were no arguments, CleanPatterns returns ".". Set the raw + // string back to "" for better errors. + if len(rawArgs) == 0 { + q.raw = "" + } + // Guard against 'go get x.go', a common mistake. // Note that package and module paths may end with '.go', so only print an error // if the argument has no version and either has no slash or refers to an existing file. @@ -820,6 +826,9 @@ func (r *resolver) performLocalQueries(ctx context.Context) { } if len(match.Pkgs) == 0 { + if q.raw == "" || q.raw == "." { + return errSet(fmt.Errorf("no package in current directory")) + } if !q.isWildcard() { return errSet(fmt.Errorf("%s%s is not a package in module rooted at %s", q.pattern, absDetail, modload.ModRoot())) } |