imports

package
v0.8.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 21, 2023 License: MIT Imports: 16 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var ErrNoGo = fmt.Errorf("no Go source files")
View Source
var KnownArch = map[string]bool{
	"386":         true,
	"amd64":       true,
	"amd64p32":    true,
	"arm":         true,
	"armbe":       true,
	"arm64":       true,
	"arm64be":     true,
	"ppc64":       true,
	"ppc64le":     true,
	"mips":        true,
	"mipsle":      true,
	"mips64":      true,
	"mips64le":    true,
	"mips64p32":   true,
	"mips64p32le": true,
	"loong64":     true,
	"ppc":         true,
	"riscv":       true,
	"riscv64":     true,
	"s390":        true,
	"s390x":       true,
	"sparc":       true,
	"sparc64":     true,
	"wasm":        true,
}
View Source
var KnownOS = map[string]bool{
	"aix":       true,
	"android":   true,
	"darwin":    true,
	"dragonfly": true,
	"freebsd":   true,
	"hurd":      true,
	"illumos":   true,
	"ios":       true,
	"js":        true,
	"linux":     true,
	"nacl":      true,
	"netbsd":    true,
	"openbsd":   true,
	"plan9":     true,
	"solaris":   true,
	"wasip1":    true,
	"windows":   true,
	"zos":       true,
}

Functions

func AnyTags

func AnyTags() map[string]bool

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 Eval

func Eval(x constraint.Expr, tags map[string]bool, prefer bool) bool

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 MatchFile

func MatchFile(name string, tags map[string]bool) bool

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 ReadComments

func ReadComments(f io.Reader) ([]byte, error)

ReadComments is like io.ReadAll, except that it only reads the leading block of comments in the file.

func ReadImports

func ReadImports(f io.Reader, reportSyntaxError bool, imports *[]string) ([]byte, error)

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 ScanDir

func ScanDir(dir string, tags map[string]bool) ([]string, []string, error)

func ScanFiles

func ScanFiles(files []string, tags map[string]bool) ([]string, []string, error)

func ShouldBuild

func ShouldBuild(content []byte, tags map[string]bool) bool

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 Tags

func Tags() map[string]bool

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.

Types

This section is empty.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL