/
sh-bootstrap.go
44 lines (40 loc) · 897 Bytes
/
sh-bootstrap.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
package main
import (
"encoding/json"
"go/build"
"os"
"regexp"
"runtime"
"strings"
)
func main() {
reVer := regexp.MustCompile(`(\S+(?:\s*[+]\S+)?)`)
reClean := regexp.MustCompile(`[^\w._]+`)
rawVer := runtime.Version()
m := reVer.FindStringSubmatch(rawVer)
ver := reClean.ReplaceAllString(m[1], "..")
env := map[string]string{
"GOROOT": build.Default.GOROOT,
"GOPATH": build.Default.GOPATH,
"PATH": os.Getenv("PATH"),
}
varPat := regexp.MustCompile(`^((?:MARGO|GO|CGO)\w+)=(.+)$`)
for _, s := range os.Environ() {
m := varPat.FindStringSubmatch(s)
if len(m) == 3 {
env[m[1]] = m[2]
}
}
for k, v := range env {
if strings.TrimSpace(v) == "" {
delete(env, k)
}
}
os.Stdout.WriteString("\n")
json.NewEncoder(os.Stdout).Encode(map[string]interface{}{
"RawVersion": rawVer,
"Version": ver,
"Env": env,
})
os.Stdout.WriteString("\n")
}