packages

package
v0.9.0 Latest Latest
Warning

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

Go to latest
Published: Jan 12, 2018 License: Apache-2.0 Imports: 21 Imported by: 0

Documentation

Overview

Package packages provides Go package traversal in a Bazel repository.

Index

Constants

This section is empty.

Variables

View Source
var Skip = errors.New("Skip")

Functions

func JoinOptions added in v0.5.4

func JoinOptions(opts []string) []string

JoinOptions combines shell options grouped by a special separator token and returns a string for each group. The group strings will be escaped such that the original options can be recovered after Bourne shell tokenization.

func Walk

func Walk(c *config.Config, root string, f WalkFunc)

Walk traverses a directory tree. In each directory, Walk parses existing build files. In directories that Gazelle was asked to update (c.Dirs), Walk also parses source files and infers build information.

c is the base configuration for the repository. c may be copied and modified by directives found in build files.

root is an absolute file path to the directory to traverse.

f is a function that will be called for each visited directory.

Types

type GoTarget added in v0.6.0

type GoTarget struct {
	Sources, Imports PlatformStrings
	COpts, CLinkOpts PlatformStrings
	Cgo              bool
}

GoTarget contains metadata about a buildable Go target in a package.

func (*GoTarget) HasGo added in v0.6.0

func (t *GoTarget) HasGo() bool

type Package added in v0.5.0

type Package struct {
	// Name is the symbol found in package declarations of the .go files in
	// the package. It does not include the "_test" suffix from external tests.
	Name string

	// Dir is an absolute path to the directory that contains the package.
	Dir string

	// Rel is the relative path to the package directory from the repository
	// root. If the directory is the repository root itself, Rel is empty.
	// Components in Rel are separated with slashes.
	Rel string

	Library, Binary, Test, XTest GoTarget
	Proto                        ProtoTarget

	HasTestdata bool
}

Package contains metadata about a Go package extracted from a directory. It fills a similar role to go/build.Package, but it separates files by target instead of by type, and it supports multiple platforms.

func (*Package) ImportPath added in v0.5.4

func (p *Package) ImportPath(c *config.Config) string

ImportPath returns the inferred Go import path for this package. TODO(jayconrod): extract canonical import paths from comments on package statements.

func (*Package) IsCommand added in v0.5.0

func (p *Package) IsCommand() bool

IsCommand returns true if the package name is "main".

type PlatformStrings added in v0.5.0

type PlatformStrings struct {
	// Generic is a list of strings not specific to any platform.
	Generic []string

	// OS is a map from OS name (anything in config.KnownOSs) to
	// OS-specific strings.
	OS map[string][]string

	// Arch is a map from architecture name (anything in config.KnownArchs) to
	// architecture-specific strings.
	Arch map[string][]string

	// Platform is a map from platforms to OS and architecture-specific strings.
	Platform map[config.Platform][]string
}

PlatformStrings contains a set of strings associated with a buildable Go target in a package. This is used to store source file names, import paths, and flags.

func (*PlatformStrings) Clean added in v0.5.0

func (ps *PlatformStrings) Clean()

Clean sorts and de-duplicates PlatformStrings. It also removes any strings from platform-specific lists that also appear in the generic list. This is useful for imports.

func (*PlatformStrings) HasGo added in v0.5.0

func (ps *PlatformStrings) HasGo() bool

func (*PlatformStrings) IsEmpty added in v0.5.0

func (ps *PlatformStrings) IsEmpty() bool

func (*PlatformStrings) Map added in v0.5.0

func (ps *PlatformStrings) Map(f func(string) (string, error)) (PlatformStrings, []error)

Map applies a function f to the individual strings in ps. Map returns a new PlatformStrings with the results and a slice of errors that f returned. When f returns the error Skip, neither the result nor the error are recorded.

func (*PlatformStrings) MapSlice added in v0.5.4

func (ps *PlatformStrings) MapSlice(f func([]string) ([]string, error)) (PlatformStrings, []error)

MapSlice applies a function that processes slices of strings to the strings in "ps" and returns a new PlatformStrings with the results.

type ProtoTarget added in v0.6.0

type ProtoTarget struct {
	Sources, Imports PlatformStrings
	HasServices      bool

	// HasPbGo indicates whether unexcluded .pb.go files are present in the
	// same package. They will not be in this target's sources.
	HasPbGo bool
}

ProtoTarget contains metadata about proto files in a package.

func (*ProtoTarget) HasProto added in v0.6.0

func (t *ProtoTarget) HasProto() bool

type WalkFunc

type WalkFunc func(rel string, c *config.Config, pkg *Package, oldFile *bf.File, isUpdateDir bool)

A WalkFunc is a callback called by Walk in each visited directory.

rel is the relative slash-separated path to the directory from the repository root. Will be "" for the repository root directory itself.

c is the configuration for the current directory. This may have been modified by directives in the directory's build file.

pkg contains information about how to build source code in the directory. Will be nil for directories that don't contain buildable code, directories that Gazelle was not asked update, and directories where Walk encountered errors.

oldFile is the existing build file in the directory. Will be nil if there was no file.

isUpdateDir is true for directories that Gazelle was asked to update.

Jump to

Keyboard shortcuts

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