Functions
AnyTags
function
#
AnyTags returns a special set of build tags that satisfy nearly all
build tag expressions. Only "ignore" and malformed build tag requirements
are considered false.
func AnyTags() map[string]bool
Eval
function
#
Eval is like
x.Eval(func(tag string) bool { return matchTag(tag, tags) })
except that it implements the special case for tags["*"] meaning
all tags are both true and false at the same time.
func Eval(x constraint.Expr, tags map[string]bool, prefer bool) bool
MatchFile
function
#
MatchFile returns false if the name contains a $GOOS or $GOARCH
suffix which does not match the current system.
The recognized name formats are:
name_$(GOOS).*
name_$(GOARCH).*
name_$(GOOS)_$(GOARCH).*
name_$(GOOS)_test.*
name_$(GOARCH)_test.*
name_$(GOOS)_$(GOARCH)_test.*
Exceptions:
if GOOS=android, then files with GOOS=linux are also matched.
if GOOS=illumos, then files with GOOS=solaris are also matched.
if GOOS=ios, then files with GOOS=darwin are also matched.
If tags["*"] is true, then MatchFile will consider all possible
GOOS and GOARCH to be available and will consequently
always return true.
func MatchFile(name string, tags map[string]bool) bool
ReadImports
function
#
ReadImports is like io.ReadAll, except that it expects a Go file as input
and stops reading the input once the imports have completed.
func ReadImports(f io.Reader, reportSyntaxError bool, imports *[]string) ([]byte, error)
ScanDir
function
#
func ScanDir(path string, tags map[string]bool) ([]string, []string, error)
ScanFiles
function
#
func ScanFiles(files []string, tags map[string]bool) ([]string, []string, error)
ShouldBuild
function
#
ShouldBuild reports whether it is okay to use this file,
The rule is that in the file's leading run of // comments
and blank lines, which must be followed by a blank line
(to avoid including a Go package clause doc comment),
lines beginning with '// +build' are taken as build directives.
The file is accepted only if each such line lists something
matching the file. For example:
// +build windows linux
marks the file as applicable only on Windows and Linux.
If tags["*"] is true, then ShouldBuild will consider every
build tag except "ignore" to be both true and false for
the purpose of satisfying build tags, in order to estimate
(conservatively) whether a file could ever possibly be used
in any build.
func ShouldBuild(content []byte, tags map[string]bool) bool
Tags
function
#
Tags returns a set of build tags that are true for the target platform.
It includes GOOS, GOARCH, the compiler, possibly "cgo",
release tags like "go1.13", and user-specified build tags.
func Tags() map[string]bool
eval
function
#
eval is like
x.Eval(func(tag string) bool { return matchTag(tag, tags) })
except that it implements the special case for tags["*"] meaning
all tags are both true and false at the same time.
func eval(x constraint.Expr, tags map[string]bool, prefer bool) bool
isIdent
function
#
func isIdent(c byte) bool
keys
function
#
func keys(m map[string]bool) []string
loadTags
function
#
func loadTags() map[string]bool
matchTag
function
#
matchTag reports whether the tag name is valid and tags[name] is true.
As a special case, if tags["*"] is true and name is not empty or ignore,
then matchTag will return prefer instead of the actual answer,
which allows the caller to pretend in that case that most tags are
both true and false.
func matchTag(name string, tags map[string]bool, prefer bool) bool
newImportReader
function
#
func newImportReader(b *bufio.Reader) *importReader
nextByte
method
#
nextByte is like peekByte but advances beyond the returned byte.
func (r *importReader) nextByte(skipSpace bool) byte
peekByte
method
#
peekByte returns the next byte from the input reader but does not advance beyond it.
If skipSpace is set, peekByte skips leading spaces and comments.
func (r *importReader) peekByte(skipSpace bool) byte
readByte
method
#
readByte reads the next byte from the input, saves it in buf, and returns it.
If an error occurs, readByte records the error in r.err and returns 0.
func (r *importReader) readByte() byte
readIdent
method
#
readIdent reads an identifier from the input.
If an identifier is not present, readIdent records a syntax error.
func (r *importReader) readIdent()
readImport
method
#
readImport reads an import clause - optional identifier followed by quoted string -
from the input.
func (r *importReader) readImport(imports *[]string)
readKeyword
method
#
readKeyword reads the given keyword from the input.
If the keyword is not present, readKeyword records a syntax error.
func (r *importReader) readKeyword(kw string)
readString
method
#
readString reads a quoted string literal from the input.
If an identifier is not present, readString records a syntax error.
func (r *importReader) readString(save *[]string)
scanFiles
function
#
func scanFiles(files []string, tags map[string]bool, explicitFiles bool) ([]string, []string, error)
syntaxError
method
#
syntaxError records a syntax error, but only if an I/O error has not already been recorded.
func (r *importReader) syntaxError()