Documentation ¶
Overview ¶
Package buildutil provides utilities related to the go/build package in the standard library.
Index ¶
- func AllPackages(ctxt *build.Context) []string
- func ContainingPackage(ctxt *build.Context, dir, filename string) (*build.Package, error)
- func FileExists(ctxt *build.Context, path string) bool
- func ForEachPackage(ctxt *build.Context, found func(importPath string, err error))
- func IsAbsPath(ctxt *build.Context, path string) bool
- func JoinPath(ctxt *build.Context, path ...string) string
- func OpenFile(ctxt *build.Context, path string) (io.ReadCloser, error)
- func ParseFile(fset *token.FileSet, ctxt *build.Context, displayPath func(string) string, ...) (*ast.File, error)
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func AllPackages ¶
AllPackages returns the import path of each Go package in any source directory of the specified build context (e.g. $GOROOT or an element of $GOPATH). Errors are ignored. The results are sorted.
The result may include import paths for directories that contain no *.go files, such as "archive" (in $GOROOT/src).
All I/O is via the build.Context virtual file system, which must be concurrency-safe.
func ContainingPackage ¶
ContainingPackage returns the package containing filename.
If filename is not absolute, it is interpreted relative to working directory dir. All I/O is via the build context's virtual file system, if any.
The '...Files []string' fields of the resulting build.Package are not populated (build.FindOnly mode).
TODO(adonovan): call this from oracle when the tree thaws.
func FileExists ¶
FileExists returns true if the specified file exists, using the build context's virtual file system.
func ForEachPackage ¶
ForEachPackage calls the found function with the import path of each Go package it finds in any source directory of the specified build context (e.g. $GOROOT or an element of $GOPATH).
If the package directory exists but could not be read, the second argument to the found function provides the error.
The found function and the build.Context virtual file system accessors must be concurrency safe.
func IsAbsPath ¶
IsAbsPath behaves like filepath.IsAbs, but uses the build context's virtual file system, if any.
func JoinPath ¶
JoinPath behaves like filepath.Join, but uses the build context's virtual file system.
func OpenFile ¶
OpenFile behaves like os.Open, but uses the build context's virtual file system, if any.
func ParseFile ¶
func ParseFile(fset *token.FileSet, ctxt *build.Context, displayPath func(string) string, dir string, file string, mode parser.Mode) (*ast.File, error)
ParseFile behaves like parser.ParseFile, but uses the build context's virtual file system, if any.
If file is not absolute (as defined by IsAbsPath), the (dir, file) components are joined using JoinPath; dir must be absolute.
The displayPath function, if provided, is used to transform the filename that will be attached to the ASTs.
TODO(adonovan): call this from go/loader.parseFiles when the tree thaws.
Types ¶
This section is empty.