On Friday, 23 December 2016 14:01:15 UTC-5, [email protected] 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 [email protected].
For more options, visit https://groups.google.com/d/optout.