On Friday, 23 December 2016 14:01:15 UTC-5, mhh...@gmail.com wrote: > > Hi, > > i m looking for the right way to load and parse an ast.ImportSpec > referenced into an ast.File object. > > Its mostly about the path resolution, I can t find a method like > > parse(baseDir string, pkgPath string)... > > where baseDir (is not necessarily the same as the ast.File path, in my > understanding) would be the directory which may contain the vendor folder, > and pkgPath something like `go/ast`. > > Or maybe its ok to just test that the directory exists at, > - baseDir / vendor / pkgPath > - goroot / src / pkgPath > ? > > Seems to me its a bit more complex than that. >
Indeed it is. The interpretation of an import path string depends on the build tool. Most open-source Go projects use the 'go build' command and its conventions for workspace layout. The core of this tool is exposed as a library in the standard "go/build" package. Its build.Context type abstracts a workspace, and most applications use the default value build.Default to find packages relative to the directories specified by the GOROOT and GOPATH environment variables. The (*Context).Import function locates a package given its import path: https://golang.org/pkg/go/build/#Context.Import This function returns a build.Package, from which you can find the set of source files that make up the package. Most applications must either recursively process source code for imported packages, or load type information from export data files (.a) written by the compiler. For source, use the golang.org/x/tools/go/loader package. For export data, use golang.org/x/tools/go/gcexportdata. See the examples in each package for details. There is a also a tutorial for the type checker at htps://github.com/golang/example/tree/master/gotypes. <https://www.google.com/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#> <https://webcache.googleusercontent.com/search?q=cache:cbCcFxv6mjwJ:https://github.com/golang/example/tree/master/gotypes+&cd=1&hl=en&ct=clnk&gl=us> <https://www.google.com/search?espv=2&biw=1128&bih=603&q=related:https://github.com/golang/example/tree/master/gotypes+go+types+tutorial&tbo=1&sa=X&ved=0ahUKEwi0uOOhxo_RAhXISyYKHXSqBKYQHwghMAA> -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.