Handling the case where there's more than one go-import on a go-get redirect
diff --git a/cmd/get_imports.go b/cmd/get_imports.go
index 028d8d8..973d4c5 100644
--- a/cmd/get_imports.go
+++ b/cmd/get_imports.go
@@ -506,7 +506,9 @@
t, err = d.Token()
if err != nil {
if err == io.EOF {
- err = nil
+ // If we hit the end of the markup and don't have anything
+ // we return an error.
+ err = v.ErrCannotDetectVCS
}
return
}
@@ -525,27 +527,19 @@
}
if f := strings.Fields(attrValue(e.Attr, "content")); len(f) == 3 {
- // If this the second time a go-import statement has been detected
- // return an error. There should only be one import statement per
- // html file. We don't simply return the first found in order to
- // detect pages including more than one.
- if u != "" {
- u = ""
- err = v.ErrCannotDetectVCS
- return
- }
-
// If the prefix supplied by the remote system isn't a prefix to the
- // url we're fetching return an error. This will work for exact
- // matches and prefixes. For example, golang.org/x/net as a prefix
- // will match for golang.org/x/net and golang.org/x/net/context.
+ // url we're fetching return continue looking for more go-imports.
+ // This will work for exact matches and prefixes. For example,
+ // golang.org/x/net as a prefix will match for golang.org/x/net and
+ // golang.org/x/net/context.
vcsURL := ur.Host + ur.Path
if !strings.HasPrefix(vcsURL, f[0]) {
- err = v.ErrCannotDetectVCS
+ continue
+ } else {
+ u = f[0]
return
}
- u = f[0]
}
}
}