package config import "time" type gocConfig struct { Debug bool CurWd string Goflags []string ImportPath string // import path of the project CurPkgDir string CurModProjectDir string TmpModProjectDir string TmpPkgDir string ContainSpecialPattern bool // 参数中包含 ... Pkgs map[string]*Package GOPATH string GOBIN string IsMod bool // deprecated GlobalCoverVarImportPath string GlobalCoverVarImportPathDir string Host string Mode string // cover mode } // GocConfig 全局变量,存放 goc 的各种元属性 var GocConfig gocConfig type goConfig struct { BuildA bool BuildBuildmode string // -buildmode flag BuildMod string // -mod flag BuildModReason string // reason -mod flag is set, if set by default BuildI bool // -i flag BuildLinkshared bool // -linkshared flag BuildMSan bool // -msan flag BuildN bool // -n flag BuildO string // -o flag BuildP int // -p flag BuildPkgdir string // -pkgdir flag BuildRace bool // -race flag BuildToolexec string // -toolexec flag BuildToolchainName string BuildToolchainCompiler func() string BuildToolchainLinker func() string BuildTrimpath bool // -trimpath flag BuildV bool // -v flag BuildWork bool // -work flag BuildX bool // -x flag // from buildcontext Installsuffix string // -installSuffix BuildTags string // -tags // from load BuildAsmflags string BuildCompiler string BuildGcflags string BuildGccgoflags string BuildLdflags string // mod related ModCacheRW bool ModFile string } var GoConfig goConfig // PackageCover holds all the generate coverage variables of a package type PackageCover struct { Package *Package Vars map[string]*FileVar } // FileVar holds the name of the generated coverage variables targeting the named file. type FileVar struct { File string Var string } // Package map a package output by go list // this is subset of package struct in: https://github.com/golang/go/blob/master/src/cmd/go/internal/load/pkg.go#L58 type Package struct { Dir string `json:"Dir"` // directory containing package sources ImportPath string `json:"ImportPath"` // import path of package in dir Name string `json:"Name"` // package name Target string `json:",omitempty"` // installed target for this package (may be executable) Root string `json:",omitempty"` // Go root, Go path dir, or module root dir containing this package Module *ModulePublic `json:",omitempty"` // info about package's module, if any Goroot bool `json:"Goroot,omitempty"` // is this package in the Go root? Standard bool `json:"Standard,omitempty"` // is this package part of the standard Go library? DepOnly bool `json:"DepOnly,omitempty"` // package is only a dependency, not explicitly listed // Source files GoFiles []string `json:"GoFiles,omitempty"` // .go source files (excluding CgoFiles, TestGoFiles, XTestGoFiles) CgoFiles []string `json:"CgoFiles,omitempty"` // .go source files that import "C" // Dependency information Deps []string `json:"Deps,omitempty"` // all (recursively) imported dependencies Imports []string `json:",omitempty"` // import paths used by this package ImportMap map[string]string `json:",omitempty"` // map from source import to ImportPath (identity entries omitted) // Error information Incomplete bool `json:"Incomplete,omitempty"` // this package or a dependency has an error Error *PackageError `json:"Error,omitempty"` // error loading package DepsErrors []*PackageError `json:"DepsErrors,omitempty"` // errors loading dependencies } // ModulePublic represents the package info of a module type ModulePublic struct { Path string `json:",omitempty"` // module path Version string `json:",omitempty"` // module version Versions []string `json:",omitempty"` // available module versions Replace *ModulePublic `json:",omitempty"` // replaced by this module Time *time.Time `json:",omitempty"` // time version was created Update *ModulePublic `json:",omitempty"` // available update (with -u) Main bool `json:",omitempty"` // is this the main module? Indirect bool `json:",omitempty"` // module is only indirectly needed by main module Dir string `json:",omitempty"` // directory holding local copy of files, if any GoMod string `json:",omitempty"` // path to go.mod file describing module, if any GoVersion string `json:",omitempty"` // go version used in module Error *ModuleError `json:",omitempty"` // error loading module } // ModuleError represents the error loading module type ModuleError struct { Err string // error text } // PackageError is the error info for a package when list failed type PackageError struct { ImportStack []string // shortest path from package named on command line to this one Pos string // position of error (if present, file:line:col) Err string // the error itself }