imports

package standard library
go1.23rc2 Latest Latest
Warning

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

Go to latest
Published: Jul 16, 2024 License: BSD-3-Clause 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 added in go1.13

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 added in go1.19

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