130 lines
5.1 KiB
Go
130 lines
5.1 KiB
Go
package config
|
|
|
|
import "time"
|
|
|
|
type gocConfig struct {
|
|
Debug bool
|
|
CurPkgDir string
|
|
CurModProjectDir string
|
|
TmpModProjectDir string
|
|
TmpPkgDir string
|
|
BinaryName string
|
|
Pkgs map[string]*Package
|
|
GOPATH string
|
|
GOBIN string
|
|
IsMod bool // deprecated
|
|
|
|
Port int // used both by server & client
|
|
StorePath string // persist store location
|
|
}
|
|
|
|
// 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
|
|
}
|