Documentation ¶
Overview ¶
Package context gathers the status of packages and stores it in Context. A new Context needs to be pointed to the root of the project and any project owned vendor file.
Package context gathers the status of packages and stores it in Context. A new Context needs to be pointed to the root of the project and any project owned vendor file.
Index ¶
- Variables
- func Get(logger io.Writer, pkgspecName string, insecure bool) error
- func LicenseDiscover(root, startIn, overridePath string, list map[string]License) error
- func RemovePackage(path, root string, tree bool) error
- type Conflict
- type Context
- func (ctx *Context) Alter() error
- func (ctx *Context) Check() []*Conflict
- func (ctx *Context) CopyPackage(destPath, srcPath, lookRoot, pkgPath string, ignoreFiles []string, tree bool, ...) error
- func (ctx *Context) IgnoreBuildAndPackage(ignore string)
- func (ctx *Context) ModifyImport(imp *pkgspec.Pkg, mod Modify, mops ...ModifyOption) error
- func (ctx *Context) ModifyStatus(sg StatusGroup, mod Modify, mops ...ModifyOption) error
- func (ctx *Context) ResloveApply(cc []*Conflict)
- func (ctx *Context) ResolveAutoVendorFileOrigin(cc []*Conflict) []*Conflict
- func (ctx *Context) Status() ([]StatusItem, error)
- func (ctx *Context) Sync() (err error)
- func (ctx *Context) VendorFilePackagePath(path string) *vendorfile.Package
- func (ctx *Context) VerifyVendor() (outOfDate []*vendorfile.Package, err error)
- func (ctx *Context) Write(s []byte) (int, error)
- func (ctx *Context) WriteVendorFile() (err error)
- type ErrDirtyPackage
- type ErrMissingVendorFile
- type ErrNotInGOPATH
- type ErrOldVersion
- type ErrPackageExists
- type ErrTreeChildren
- type ErrTreeParents
- type File
- type Label
- type LabelSource
- type License
- type LicenseSort
- type Modify
- type ModifyOption
- type Operation
- type OperationState
- type OperationType
- type Package
- type RootType
- type Status
- type StatusGroup
- type StatusItem
- type StatusLocation
- type StatusPresence
- type StatusType
- type VCSCmd
Constants ¶
This section is empty.
Variables ¶
var ( // ErrMissingGOROOT returns if the GOROOT was not found. ErrMissingGOROOT = errors.New("Unable to determine GOROOT.") // ErrMissingGOPATH returns if no GOPATH was found. ErrMissingGOPATH = errors.New("Missing GOPATH. Check your environment variable GOPATH.") )
Functions ¶
func LicenseDiscover ¶ added in v1.0.1
LicenseDiscover looks for license files in a given path.
func RemovePackage ¶
RemovePackage removes the specified folder files. If folder is empty when done (no nested folders, remove the folder and any empty parent folders.
Types ¶
type Conflict ¶
type Conflict struct { Canonical string Local string Operation []*Operation OpIndex int Resolved bool }
Conflict reports packages that are scheduled to conflict.
func ResolveAutoLongestPath ¶
ResolveAutoLongestPath finds the longest local path in each conflict and set it to be used.
func ResolveAutoShortestPath ¶
ResolveAutoShortestPath finds the shortest local path in each conflict and set it to be used.
type Context ¶
type Context struct { Logger io.Writer // Write to the verbose log. Insecure bool // Allow insecure network operations GopathList []string // List of GOPATHs in environment. Includes "src" dir. Goroot string // The path to the standard library. RootDir string // Full path to the project root. RootGopath string // The GOPATH the project is in. RootImportPath string // The import path to the project. VendorFile *vendorfile.File VendorFilePath string // File path to vendor file. VendorFolder string // Store vendor packages in this folder. RootToVendorFile string // The relative path from the project root to the vendor file directory. VendorDiscoverFolder string // Normally auto-set to "vendor" // Package is a map where the import path is the key. // Populated with LoadPackage. Package map[string]*Package // MoveRule provides the translation from origional import path to new import path. RewriteRule map[string]string // map[from]to Operation []*Operation // contains filtered or unexported fields }
Context represents the current project context.
func NewContext ¶
func NewContext(root, vendorFilePathRel, vendorFolder string, rewriteImports bool) (*Context, error)
NewContext creates new context from a given root folder and vendor file path. The vendorFolder is where vendor packages should be placed.
func NewContextWD ¶
NewContextWD creates a new context. It looks for a root folder by finding a vendor file.
func (*Context) Check ¶
Check returns any conflicts when more then one package can be moved into the same path.
func (*Context) CopyPackage ¶
func (ctx *Context) CopyPackage(destPath, srcPath, lookRoot, pkgPath string, ignoreFiles []string, tree bool, h hash.Hash, beforeCopy func(deps []string) error) error
CopyPackage copies the files from the srcPath to the destPath, destPath folder and parents are are created if they don't already exist.
func (*Context) IgnoreBuildAndPackage ¶ added in v1.0.4
IgnoreBuildAndPackage takes a space separated list of tags or package prefixes to ignore. Tags are words, packages are folders, containing or ending with a "/". "a b c" will ignore tags "a" OR "b" OR "c". "p/x q/" will ignore packages "p/x" OR "p/x/y" OR "q" OR "q/z", etc.
func (*Context) ModifyImport ¶
ModifyImport adds the package to the context.
func (*Context) ModifyStatus ¶ added in v1.0.1
func (ctx *Context) ModifyStatus(sg StatusGroup, mod Modify, mops ...ModifyOption) error
ModifyStatus adds packages to the context by status.
func (*Context) ResloveApply ¶
ResolveApply applies the conflict resolution selected. It chooses the Operation listed in the OpIndex field.
func (*Context) ResolveAutoVendorFileOrigin ¶
ResolveAutoVendorFileOrigin resolves conflicts based on the vendor file if possible.
func (*Context) Status ¶
func (ctx *Context) Status() ([]StatusItem, error)
Status obtains the current package status list.
func (*Context) Sync ¶
Sync checks for outdated packages in the vendor folder and fetches the correct revision from the remote.
func (*Context) VendorFilePackagePath ¶
func (ctx *Context) VendorFilePackagePath(path string) *vendorfile.Package
VendorFilePackagePath finds a given vendor file package give the import path.
func (*Context) VerifyVendor ¶
func (ctx *Context) VerifyVendor() (outOfDate []*vendorfile.Package, err error)
func (*Context) WriteVendorFile ¶
WriteVendorFile writes the current vendor file to the context location.
type ErrDirtyPackage ¶
type ErrDirtyPackage struct {
ImportPath string
}
ErrDirtyPackage returns if package is in dirty version control.
func (ErrDirtyPackage) Error ¶
func (err ErrDirtyPackage) Error() string
type ErrMissingVendorFile ¶
type ErrMissingVendorFile struct {
Path string
}
ErrMissingVendorFile returns if package already exists.
func (ErrMissingVendorFile) Error ¶
func (err ErrMissingVendorFile) Error() string
type ErrNotInGOPATH ¶
type ErrNotInGOPATH struct {
Missing string
}
ErrNotInGOPATH returns if not currently in the GOPATH.
func (ErrNotInGOPATH) Error ¶
func (err ErrNotInGOPATH) Error() string
type ErrOldVersion ¶
type ErrOldVersion struct {
Message string
}
ErrOldVersion returns if vendor file is not in the vendor folder.
func (ErrOldVersion) Error ¶
func (err ErrOldVersion) Error() string
type ErrPackageExists ¶
type ErrPackageExists struct {
Package string
}
ErrPackageExists returns if package already exists.
func (ErrPackageExists) Error ¶
func (err ErrPackageExists) Error() string
type ErrTreeChildren ¶
type ErrTreeChildren struct {
// contains filtered or unexported fields
}
func (ErrTreeChildren) Error ¶
func (err ErrTreeChildren) Error() string
type ErrTreeParents ¶
type ErrTreeParents struct {
// contains filtered or unexported fields
}
func (ErrTreeParents) Error ¶
func (err ErrTreeParents) Error() string
type Label ¶
type Label struct { Text string Source LabelSource }
func FindLabel ¶
FindLabel matches a single label from a list of labels, given a version. If the returning label.Source is LabelNone, then no labels match.
Labels are first broken into sections separated by "-". Shortest wins. If they have the same number of above sections, then they are compared further. Number sequences are treated as numbers. Numbers do not need a separator. The "." is a break point as well.
type LabelSource ¶
type LabelSource byte
const ( LabelNone LabelSource = iota LabelBranch LabelTag )
func (LabelSource) String ¶
func (ls LabelSource) String() string
type LicenseSort ¶ added in v1.0.1
type LicenseSort []License
func (LicenseSort) Len ¶ added in v1.0.1
func (list LicenseSort) Len() int
func (LicenseSort) Less ¶ added in v1.0.1
func (list LicenseSort) Less(i, j int) bool
func (LicenseSort) Swap ¶ added in v1.0.1
func (list LicenseSort) Swap(i, j int)
type ModifyOption ¶ added in v1.0.1
type ModifyOption byte
const ( Uncommitted ModifyOption = iota MatchTree IncludeTree )
type Operation ¶
type Operation struct { Type OperationType Pkg *Package // Source file path to move packages from. // Must not be empty. Src string // Destination file path to move package to. // If Dest if empty the package is removed. Dest string // Files to ignore for operation. IgnoreFile []string State OperationState // True if the operation should treat the package as uncommitted. Uncommitted bool }
Operation defines how packages should be moved.
TODO (DT): Remove Pkg field and change Src and Dest to *pkgspec.Pkg types.
type OperationState ¶
type OperationState byte
OperationState is the state of the given package move operation.
const ( OpReady OperationState = iota // Operation is ready to go. OpIgnore // Operation should be ignored. OpDone // Operation has been completed. )
type OperationType ¶
type OperationType byte
const ( OpCopy OperationType = iota OpRemove OpFetch )
func (OperationType) String ¶
func (t OperationType) String() string
type Package ¶
type Package struct { OriginDir string // Origin directory Dir string // Physical directory path of the package. Status Status // Status and location of the package. *pkgspec.Pkg Local string // Current location of a package relative to $GOPATH/src. Gopath string // Includes trailing "src". Files []*File // contains filtered or unexported fields }
Package maintains information pertaining to a package.
type Status ¶
type Status struct { Type StatusType // program, package Location StatusLocation // vendor, local, external, stdlib Presence StatusPresence // missing, unused, tree, excluded Not bool // Not indicates boolean operation "not" on above. }
Status is the package type, location, and presence indicators.
func (Status) MatchGroup ¶
func (status Status) MatchGroup(filter StatusGroup) bool
type StatusGroup ¶
type StatusGroup struct { Status []Status Group []StatusGroup And bool Not bool }
StatusGroup is the logical filter for status with "and", "not", and grouping.
func (StatusGroup) String ¶
func (sg StatusGroup) String() string
type StatusItem ¶
type StatusItem struct { Status Status Pkg *pkgspec.Pkg VersionExact string Local string ImportedBy []*Package }
ListItem represents a package in the current project.
func (StatusItem) String ¶
func (li StatusItem) String() string
type StatusLocation ¶
type StatusLocation byte // StatusLocation is where the package is.
const ( LocationUnknown StatusLocation = iota // LocationUnknown is unset StatusLocation. LocationNotFound // LocationNotFound package is not to be found (use PresenceMissing). LocationStandard // LocationStandard package is in the standard library. LocationLocal // LocationLocal package is in a project, not in a vendor folder. LocationExternal // LocationExternal package is not in a project, in GOPATH. LocationVendor // LocationVendor package is in a vendor folder. )
type StatusPresence ¶
type StatusPresence byte // StatusPresence is if it can be found or referenced.
const ( PresenceUnknown StatusPresence = iota // PresenceUnknown is unset StatusPresence. PresenceFound // PresenceFound package exists. PresenceMissing // PresenceMissing package is referenced but not found. PresenceUnused // PresenceUnused package is found locally but not referenced. PresenceTree // PresenceTree package is in vendor folder, in a tree, but not referenced. PresenceExcluded // PresenceExcluded package exists, but should not be vendored. )
type StatusType ¶
type StatusType byte // StatusType is main or not-main.
const ( TypeUnknown StatusType = iota // TypeUnknown is unset StatusType. TypePackage // TypePackage package is a non-main package. TypeProgram // TypeProgram package is a main package. )