package modload

import "cmd/go/internal/modload"

Index

Variables

var (
	MustUseModules = mustUseModules()

	ModRoot string

	Target module.Version

	CmdModInit   bool   // running 'go mod init'
	CmdModModule string // module argument for 'go mod init'
)
var ErrRequire = errors.New("error loading module requirements")

ErrRequire is the sentinel error returned when Require encounters problems. It prints the problems directly to standard error, so that multiple errors can be displayed easily.

var HelpGoMod = &base.Command{
	UsageLine: "go.mod",
	Short:     "the go.mod file",
	Long:      "" /* 2978 byte string literal not displayed */,
}
var HelpModules = &base.Command{
	UsageLine: "modules",
	Short:     "modules, module versions, and more",
	Long:      "" /* 18132 byte string literal not displayed */,
}
var LoadTests bool

LoadTests controls whether the loaders load tests of the root packages.

Functions

func AllowWriteGoMod

func AllowWriteGoMod()

AllowWriteGoMod undoes the effect of DisallowWriteGoMod: future calls to WriteGoMod will update go.mod if needed. Note that any past calls have been discarded, so typically a call to AlowWriteGoMod should be followed by a call to WriteGoMod.

func Allowed

func Allowed(m module.Version) bool

Allowed reports whether module m is allowed (not excluded) by the main module's go.mod.

func BinDir

func BinDir() string

func BuildList

func BuildList() []module.Version

BuildList returns the module build list, typically constructed by a previous call to LoadBuildList or ImportPaths. The caller must not modify the returned list.

func DirImportPath

func DirImportPath(dir string) string

DirImportPath returns the effective import path for dir, provided it is within the main module, or else returns ".".

func DisallowWriteGoMod

func DisallowWriteGoMod()

DisallowWriteGoMod causes future calls to WriteGoMod to do nothing at all.

func Enabled

func Enabled() bool

Enabled reports whether modules are (or must be) enabled. If modules must be enabled but are not, Enabled returns true and then the first use of module information will call die (usually through InitMod and MustInit).

func Failed

func Failed() bool

Failed reports whether module loading failed. If Failed returns true, then any use of module information will call die.

func FindModulePath

func FindModulePath(dir string) (string, error)

Exported only for testing.

func FindModuleRoot

func FindModuleRoot(dir, limit string, legacyConfigOK bool) (root, file string)

Exported only for testing.

func Import

func Import(path string) (m module.Version, dir string, err error)

Import finds the module and directory in the build list containing the package with the given import path. The answer must be unique: Import returns an error if multiple modules attempt to provide the same package. Import can return a module with an empty m.Path, for packages in the standard library. Import can return an empty directory string, for fake packages like "C" and "unsafe".

If the package cannot be found in the current build list, Import returns an ImportMissingError as the error. If Import can identify a module that could be added to supply the package, the ImportMissingError records that module.

func ImportFromFiles

func ImportFromFiles(gofiles []string)

ImportFromFiles adds modules to the build list as needed to satisfy the imports in the named Go source files.

func ImportMap

func ImportMap(path string) string

ImportMap returns the actual package import path for an import path found in source code. If the given import path does not appear in the source code for the packages that have been loaded, ImportMap returns the empty string.

func ImportPaths

func ImportPaths(patterns []string) []*search.Match

ImportPaths returns the set of packages matching the args (patterns), adding modules to the build list as needed to satisfy new imports.

func Init

func Init()

func InitMod

func InitMod()

func ListModules

func ListModules(args []string, listU, listVersions bool) []*modinfo.ModulePublic

func LoadALL

func LoadALL() []string

LoadALL returns the set of all packages in the current module and their dependencies in any other modules, without filtering due to build tags, except "+build ignore". It adds modules to the build list as needed to satisfy new imports. This set is useful for deciding whether a particular import is needed anywhere in a module.

func LoadBuildList

func LoadBuildList() []module.Version

LoadBuildList loads and returns the build list from go.mod. The loading of the build list happens automatically in ImportPaths: LoadBuildList need only be called if ImportPaths is not (typically in commands that care about the module but no particular package).

func LoadVendor

func LoadVendor() []string

LoadVendor is like LoadALL but only follows test dependencies for tests in the main module. Tests in dependency modules are ignored completely. This set is useful for identifying the which packages to include in a vendor directory.

func Lookup

func Lookup(path string) (dir, realPath string, err error)

Lookup returns the source directory, import path, and any loading error for the package at path. Lookup requires that one of the Load functions in this package has already been called.

func MinReqs

func MinReqs() mvs.Reqs

MinReqs returns a Reqs with minimal dependencies of Target, as will be written to go.mod.

func ModFile

func ModFile() *modfile.File

ModFile returns the parsed go.mod file.

Note that after calling ImportPaths or LoadBuildList, the require statements in the modfile.File are no longer the source of truth and will be ignored: edits made directly will be lost at the next call to WriteGoMod. To make permanent changes to the require statements in go.mod, edit it before calling ImportPaths or LoadBuildList.

func ModInfoProg

func ModInfoProg(info string) []byte

func ModuleInfo

func ModuleInfo(path string) *modinfo.ModulePublic

func ModuleUsedDirectly

func ModuleUsedDirectly(path string) bool

ModuleUsedDirectly reports whether the main module directly imports some package in the module with the given path.

func MustInit

func MustInit()

MustInit calls Init if needed and checks that modules are enabled and the main module has been found. If not, MustInit calls base.Fatalf with an appropriate message.

func PackageBuildInfo

func PackageBuildInfo(path string, deps []string) string

func PackageDir

func PackageDir(path string) string

PackageDir returns the directory containing the source code for the package named by the import path.

func PackageModule

func PackageModule(path string) module.Version

PackageModule returns the module providing the package named by the import path.

func PackageModuleInfo

func PackageModuleInfo(pkgpath string) *modinfo.ModulePublic

func Query

func Query(path, query string, allowed func(module.Version) bool) (*modfetch.RevInfo, error)

Query looks up a revision of a given module given a version query string. The module must be a complete module path. The version must take one of the following forms:

If the allowed function is non-nil, Query excludes any versions for which allowed returns false.

If path is the path of the main module and the query is "latest", Query returns Target.Version as the version.

func QueryPackage

func QueryPackage(path, query string, allowed func(module.Version) bool) (module.Version, *modfetch.RevInfo, error)

QueryPackage looks up a revision of a module containing path.

If multiple modules with revisions matching the query provide the requested package, QueryPackage picks the one with the longest module path.

If the path is in the the main module and the query is "latest", QueryPackage returns Target as the version.

func ReloadBuildList

func ReloadBuildList() []module.Version

func Replacement

func Replacement(mod module.Version) module.Version

Replacement returns the replacement for mod, if any, from go.mod. If there is no replacement for mod, Replacement returns a module.Version with Path == "".

func Reqs

func Reqs() mvs.Reqs

Reqs returns the current module requirement graph. Future calls to SetBuildList do not affect the operation of the returned Reqs.

func SetBuildList

func SetBuildList(list []module.Version)

SetBuildList sets the module build list. The caller is responsible for ensuring that the list is valid. SetBuildList does not retain a reference to the original list.

func TargetPackages

func TargetPackages() []string

TargetPackages returns the list of packages in the target (top-level) module, under all build tag settings.

func Why

func Why(path string) string

Why returns the "go mod why" output stanza for the given package, without the leading # comment. The package graph must have been loaded already, usually by LoadALL. If there is no reason for the package to be in the current build, Why returns an empty string.

func WhyDepth

func WhyDepth(path string) int

WhyDepth returns the number of steps in the Why listing. If there is no reason for the package to be in the current build, WhyDepth returns 0.

func WriteGoMod

func WriteGoMod()

WriteGoMod writes the current build list back to go.mod.

Types

type ImportMissingError

type ImportMissingError struct {
	ImportPath string
	Module     module.Version
}

func (*ImportMissingError) Error

func (e *ImportMissingError) Error() string

Source Files

build.go help.go import.go init.go list.go load.go query.go search.go

Version
v1.11.5
Published
Jan 23, 2019
Platform
linux/amd64
Imports
31 packages
Last checked
1 minute ago

Tools for package owners.