Support multi-component GOPATH (#73)
diff --git a/main.go b/main.go
index 5e5c353..56710f6 100644
--- a/main.go
+++ b/main.go
@@ -92,11 +92,21 @@
}
vendorDir = filepath.Join(wd, "vendor")
manifestFile = filepath.Join(vendorDir, "manifest")
- srcTree := filepath.Join(build.Default.GOPATH, "src") + string(filepath.Separator)
+ var srcTree []string
+ for _, p := range filepath.SplitList(build.Default.GOPATH) {
+ srcTree = append(srcTree, filepath.Join(p, "src")+string(filepath.Separator))
+ }
- if build.Default.GOPATH == "" || (!strings.HasPrefix(wd, srcTree) && wd != srcTree[:len(srcTree)-1]) {
+ var pathMismatch int
+ for _, p := range srcTree {
+ if !strings.HasPrefix(wd, p) && wd != p[:len(p)-1] {
+ pathMismatch++
+ continue
+ }
+ importPath = filepath.ToSlash(strings.TrimPrefix(wd, p))
+ break
+ }
+ if build.Default.GOPATH == "" || len(srcTree) == pathMismatch {
log.Println("WARNING: for go vendoring to work your project needs to be somewhere under $GOPATH/src/")
- } else {
- importPath = filepath.ToSlash(strings.TrimPrefix(wd, srcTree))
}
}