aboutsummaryrefslogtreecommitdiff
path: root/imports
diff options
context:
space:
mode:
authorHeschi Kreinick <heschi@google.com>2018-09-27 18:21:00 -0400
committerHeschi Kreinick <heschi@google.com>2018-10-16 20:20:09 +0000
commit63d31665e311d0da81db6a27060589b038fad816 (patch)
tree9b86224975d2c30df8498514745e420a7a190d9c /imports
parentbf9c22dffd8ac62d291a71530049601b128dca8e (diff)
downloadgolang-x-tools-63d31665e311d0da81db6a27060589b038fad816.tar.gz
go/packages: add name= query
Add an implementation of name= for go list. It will be used to implement goimports and godoc-like lookups by package name. Imported a copy of the semver package from the stdlib to do version comparison, and tweaked the gopathwalk API to include a hint about what kind of source directory is being traversed. Note that the tests, despite my best efforts, are not hermetic: go list insists on doing version lookups in situations where it seems to me like it shouldn't need to. I think this implementation is ready for serious use. The one thing I'm nervous about is that it currently does a substring match when looking for a package name, so if you look up a package named "a" you will get a huge number of results. This matches goimports' behavior but I don't know if it's suitable for general use. Change-Id: I2b7f823b74571fe30d3bd9c7dfafb4e6a40df5d3 Reviewed-on: https://go-review.googlesource.com/c/138878 Run-TryBot: Heschi Kreinick <heschi@google.com> Reviewed-by: Michael Matloob <matloob@golang.org>
Diffstat (limited to 'imports')
-rw-r--r--imports/fix.go6
1 files changed, 3 insertions, 3 deletions
diff --git a/imports/fix.go b/imports/fix.go
index 75d37f894..1e3bd0958 100644
--- a/imports/fix.go
+++ b/imports/fix.go
@@ -526,21 +526,21 @@ func scanGoDirs() map[string]*pkg {
result := make(map[string]*pkg)
var mu sync.Mutex
- add := func(srcDir, dir string) {
+ add := func(root gopathwalk.Root, dir string) {
mu.Lock()
defer mu.Unlock()
if _, dup := result[dir]; dup {
return
}
- importpath := filepath.ToSlash(dir[len(srcDir)+len("/"):])
+ importpath := filepath.ToSlash(dir[len(root.Path)+len("/"):])
result[dir] = &pkg{
importPath: importpath,
importPathShort: VendorlessPath(importpath),
dir: dir,
}
}
- gopathwalk.Walk(add, gopathwalk.Options{Debug: Debug, ModulesEnabled: false})
+ gopathwalk.Walk(gopathwalk.SrcDirsRoots(), add, gopathwalk.Options{Debug: Debug, ModulesEnabled: false})
return result
}