mirror of https://github.com/golang/go.git
cmd/go: improve error message when import path contains http://
Common mistake (at least for me) because hg etc. require the prefix while the go command forbids it. Before: % go get http://code.google.com/p/go.text/unicode/norm package http:/code.google.com/p/go.text/unicode/norm: unrecognized import path "http:/code.google.com/p/go.text/unicode/norm" After: % go get http://code.google.com/p/go.text/unicode/norm package http:/code.google.com/p/go.text/unicode/norm: "http://" not allowed in import path LGTM=ruiu, rsc R=rsc, ruiu CC=golang-codereviews https://golang.org/cl/97630046
This commit is contained in:
parent
0a8ce65c7a
commit
7f638e9023
|
|
@ -354,6 +354,8 @@ type repoRoot struct {
|
|||
root string
|
||||
}
|
||||
|
||||
var httpPrefixRE = regexp.MustCompile(`^https?:`)
|
||||
|
||||
// repoRootForImportPath analyzes importPath to determine the
|
||||
// version control system, and code repository to use.
|
||||
func repoRootForImportPath(importPath string) (*repoRoot, error) {
|
||||
|
|
@ -390,8 +392,12 @@ var errUnknownSite = errors.New("dynamic lookup required to find mapping")
|
|||
//
|
||||
// If scheme is non-empty, that scheme is forced.
|
||||
func repoRootForImportPathStatic(importPath, scheme string) (*repoRoot, error) {
|
||||
if strings.Contains(importPath, "://") {
|
||||
return nil, fmt.Errorf("invalid import path %q", importPath)
|
||||
// A common error is to use https://packagepath because that's what
|
||||
// hg and git require. Diagnose this helpfully.
|
||||
if loc := httpPrefixRE.FindStringIndex(importPath); loc != nil {
|
||||
// The importPath has been cleaned, so has only one slash. The pattern
|
||||
// ignores the slashes; the error message puts them back on the RHS at least.
|
||||
return nil, fmt.Errorf("%q not allowed in import path", importPath[loc[0]:loc[1]]+"//")
|
||||
}
|
||||
for _, srv := range vcsPaths {
|
||||
if !strings.HasPrefix(importPath, srv.prefix) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue