...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package version
20
21 import (
22 "runtime"
23 "strings"
24 "unicode"
25 )
26
27
28
29 const Repo = "20201104"
30
31
32
33 func Go() string {
34 return goVersion
35 }
36
37 var goVersion = goVer(runtime.Version())
38
39 const develPrefix = "devel +"
40
41 func goVer(s string) string {
42 if strings.HasPrefix(s, develPrefix) {
43 s = s[len(develPrefix):]
44 if p := strings.IndexFunc(s, unicode.IsSpace); p >= 0 {
45 s = s[:p]
46 }
47 return s
48 }
49
50 if strings.HasPrefix(s, "go1") {
51 s = s[2:]
52 var prerelease string
53 if p := strings.IndexFunc(s, notSemverRune); p >= 0 {
54 s, prerelease = s[:p], s[p:]
55 }
56 if strings.HasSuffix(s, ".") {
57 s += "0"
58 } else if strings.Count(s, ".") < 2 {
59 s += ".0"
60 }
61 if prerelease != "" {
62 s += "-" + prerelease
63 }
64 return s
65 }
66 return ""
67 }
68
69 func notSemverRune(r rune) bool {
70 return !strings.ContainsRune("0123456789.", r)
71 }
72
View as plain text