aboutsummaryrefslogtreecommitdiff
path: root/internal/stdlib/stdlib.go
diff options
context:
space:
mode:
authorJonathan Amsterdam <jba@google.com>2019-09-13 18:02:47 -0400
committerJulie Qiu <julie@golang.org>2020-03-27 16:46:43 -0400
commitb1f1b18463d78f1521597029fa3229df0f68cd49 (patch)
tree6ab37abdb28b7c43407b8ce549f48d8de9e9bd31 /internal/stdlib/stdlib.go
parentdada16267bd70fe0509bb694f913f98aa3f94689 (diff)
downloadgo-x-pkgsite-b1f1b18463d78f1521597029fa3229df0f68cd49.tar.xz
stdlib: support rc prereleases
Also, simplify versionForTag by writing a single regexp. Fixes b/140659468. Change-Id: I139f833202da450f481075a269f5ee5727e7458a Reviewed-on: https://team-review.git.corp.google.com/c/golang/discovery/+/550975 CI-Result: Cloud Build <devtools-proctor-result-processor@system.gserviceaccount.com> Reviewed-by: Julie Qiu <julieqiu@google.com>
Diffstat (limited to 'internal/stdlib/stdlib.go')
-rw-r--r--internal/stdlib/stdlib.go36
1 files changed, 19 insertions, 17 deletions
diff --git a/internal/stdlib/stdlib.go b/internal/stdlib/stdlib.go
index 74c288cf..242ebba7 100644
--- a/internal/stdlib/stdlib.go
+++ b/internal/stdlib/stdlib.go
@@ -173,8 +173,13 @@ func Versions() (_ []string, err error) {
}
var (
- minorRegexp = regexp.MustCompile(`^go(\d+\.\d+)(beta(\d+))?$`)
- patchRegexp = regexp.MustCompile(`^go(\d+\.\d+\.\d+)(beta(\d+))?$`)
+ // Regexp for matching go tags. The groups are:
+ // 1 the major.minor nversion
+ // 2 the patch version, or empty if none
+ // 3 the entire prerelease, if present
+ // 4 the prerelease type ("beta" or "rc")
+ // 5 the prerelease number
+ tagRegexp = regexp.MustCompile(`^go(\d+\.\d+)(\.\d+|)((beta|rc)(\d+))?$`)
)
// versionForTag returns the semantic version for the Go tag, or "" if
@@ -182,25 +187,22 @@ var (
// Examples:
// "go1.2" => "v1.2.0"
// "go1.13beta1" => "v1.13.0-beta.1"
+// "go1.9rc2" => "v1.9.0-rc.2"
func versionForTag(tag string) string {
- var version, prenum string
- if m := minorRegexp.FindStringSubmatch(tag); m != nil {
- version = m[1] + ".0"
- if len(m) > 2 {
- prenum = m[3]
- }
- } else if m := patchRegexp.FindStringSubmatch(tag); m != nil {
- version = m[1]
- if len(m) > 2 {
- prenum = m[3]
- }
- } else {
+ m := tagRegexp.FindStringSubmatch(tag)
+ if m == nil {
return ""
}
- if prenum == "" {
- return "v" + version
+ version := "v" + m[1]
+ if m[2] != "" {
+ version += m[2]
+ } else {
+ version += ".0"
+ }
+ if m[3] != "" {
+ version += "-" + m[4] + "." + m[5]
}
- return "v" + version + "-beta." + prenum
+ return version
}
// Zip creates a module zip representing the entire Go standard library at the