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)) } }