diff options
| author | Jonathan Amsterdam <jba@google.com> | 2019-09-13 18:02:47 -0400 |
|---|---|---|
| committer | Julie Qiu <julie@golang.org> | 2020-03-27 16:46:43 -0400 |
| commit | b1f1b18463d78f1521597029fa3229df0f68cd49 (patch) | |
| tree | 6ab37abdb28b7c43407b8ce549f48d8de9e9bd31 /internal/stdlib/stdlib.go | |
| parent | dada16267bd70fe0509bb694f913f98aa3f94689 (diff) | |
| download | go-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.go | 36 |
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 |
