增加获取GO环境变量以及格式化的方法

This commit is contained in:
白茶清欢 2022-06-26 19:37:20 +08:00
parent 65ea58229e
commit dad4d5728d
2 changed files with 101 additions and 1 deletions

55
define/golang.go Normal file
View File

@ -0,0 +1,55 @@
// Package define ...
//
// Description : define ...
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 2022-06-26 19:16
package define
// GoENV go 环境变量
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 19:16 2022/6/26
type GoENV struct {
GO111MODULE string `json:"GO111MODULE"`
GOARCH string `json:"GOARCH"`
GOBIN string `json:"GOBIN"`
GOCACHE string `json:"GOCACHE"`
GOENV string `json:"GOENV"`
GOEXE string `json:"GOEXE"`
GOEXPERIMENT string `json:"GOEXPERIMENT"`
GOFLAGS string `json:"GOFLAGS"`
GOHOSTARCH string `json:"GOHOSTARCH"`
GOHOSTOS string `json:"GOHOSTOS"`
GOINSECURE string `json:"GOINSECURE"`
GOMODCACHE string `json:"GOMODCACHE"`
GONOPROXY string `json:"GONOPROXY"`
GONOSUMDB string `json:"GONOSUMDB"`
GOOS string `json:"GOOS"`
GOPATH string `json:"GOPATH"`
GOPRIVATE string `json:"GOPRIVATE"`
GOPROXY string `json:"GOPROXY"`
GOROOT string `json:"GOROOT"`
GOSUMDB string `json:"GOSUMDB"`
GOTMPDIR string `json:"GOTMPDIR"`
GOTOOLDIR string `json:"GOTOOLDIR"`
GOVCS string `json:"GOVCS"`
GOVERSION string `json:"GOVERSION"`
GCCGO string `json:"GCCGO"`
GOAMD64 string `json:"GOAMD64"`
AR string `json:"AR"`
CC string `json:"CC"`
CXX string `json:"CXX"`
CGO_ENABLED string `json:"CGO_ENABLED"`
GOMOD string `json:"GOMOD"`
GOWORK string `json:"GOWORK"`
CGO_CFLAGS string `json:"CGO_CFLAGS"`
CGO_CPPFLAGS string `json:"CGO_CPPFLAGS"`
CGO_CXXFLAGS string `json:"CGO_CXXFLAGS"`
CGO_FFLAGS string `json:"CGO_FFLAGS"`
CGO_LDFLAGS string `json:"CGO_LDFLAGS"`
PKG_CONFIG string `json:"PKG_CONFIG"`
GOGCCFLAGS string `json:"GOGCCFLAGS"`
}

View File

@ -8,6 +8,7 @@
package command
import (
"encoding/json"
"fmt"
"strings"
@ -136,3 +137,47 @@ func (g *golang) GetRecommendGoProxyList() []string {
func (g *golang) FormatCode() *define.Result {
return Execute(g.workDir, "gofmt", []string{"-w", "-l", "./*"})
}
// GetGoENV 获取环境变量
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 19:25 2022/6/26
func (g *golang) GetGoENV() define.GoENV {
result := Execute(g.workDir, "go", []string{"env"})
return g.FormatGoENV(string(result.Output))
}
// FormatGoENV 格式化环境变量
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 19:26 2022/6/26
func (g *golang) FormatGoENV(sourceENV string) define.GoENV {
// fmt.Println(sourceENV)
envArr := strings.Split(sourceENV, "\n")
envTable := make(map[string]string)
for _, item := range envArr {
if len(item) == 0 {
continue
}
pair := strings.Split(item, "=")
if len(pair) == 0 {
continue
}
if len(pair) == 1 {
envTable[pair[0]] = ""
continue
}
envTable[pair[0]] = strings.TrimRight(
strings.TrimLeft(
strings.Join(pair[1:], "="), "\"",
), "\"",
)
}
byteData, _ := json.Marshal(envTable)
var envResult define.GoENV
_ = json.Unmarshal(byteData, &envResult)
return envResult
}