aboutsummaryrefslogtreecommitdiff
path: root/internal/stdlib/stdlib.go
diff options
context:
space:
mode:
authorJulie Qiu <julie@golang.org>2021-06-04 12:07:47 -1000
committerJulie Qiu <julie@golang.org>2021-06-07 16:07:43 +0000
commit607ff3872afd4b17d056e545bb895ac3dadb9822 (patch)
tree906d8c670c832b1f6b0ffa965a019383a99c2cd6 /internal/stdlib/stdlib.go
parenta47f8856e8b491e6f09881c574ef2d765156a681 (diff)
downloadgo-x-pkgsite-607ff3872afd4b17d056e545bb895ac3dadb9822.tar.xz
internal/stdlib: support fetching latest version
It's now possible to fetch std@latest from the worker. Change-Id: Iacdd376af571fa8d610f5afe3f6a9ed77fc91206 Reviewed-on: https://go-review.googlesource.com/c/pkgsite/+/325309 Trust: Julie Qiu <julie@golang.org> Run-TryBot: Julie Qiu <julie@golang.org> TryBot-Result: kokoro <noreply+kokoro@google.com> Reviewed-by: Jamal Carvalho <jamal@golang.org>
Diffstat (limited to 'internal/stdlib/stdlib.go')
-rw-r--r--internal/stdlib/stdlib.go24
1 files changed, 15 insertions, 9 deletions
diff --git a/internal/stdlib/stdlib.go b/internal/stdlib/stdlib.go
index 19d09db8..aed321ef 100644
--- a/internal/stdlib/stdlib.go
+++ b/internal/stdlib/stdlib.go
@@ -303,16 +303,22 @@ func ZipInfo(requestedVersion string) (resolvedVersion string, err error) {
//
// Zip ignores go.mod files in the standard library, treating it as if it were a
// single module named "std" at the given version.
-func Zip(resolvedVersion string) (_ *zip.Reader, resolvedVersion2 string, commitTime time.Time, err error) {
+func Zip(requestedVersion string) (_ *zip.Reader, resolvedVersion2 string, commitTime time.Time, err error) {
// This code taken, with modifications, from
// https://github.com/shurcooL/play/blob/master/256/moduleproxy/std/std.go.
- defer derrors.Wrap(&err, "stdlib.Zip(%q)", resolvedVersion)
+ defer derrors.Wrap(&err, "stdlib.Zip(%q)", requestedVersion)
var repo *git.Repository
if UseTestData {
- repo, err = getTestGoRepo(resolvedVersion)
+ repo, err = getTestGoRepo(requestedVersion)
} else {
- repo, err = getGoRepo(resolvedVersion)
+ if requestedVersion == "latest" {
+ requestedVersion, err = semanticVersion(requestedVersion)
+ if err != nil {
+ return nil, "", time.Time{}, err
+ }
+ }
+ repo, err = getGoRepo(requestedVersion)
}
if err != nil {
return nil, "", time.Time{}, err
@@ -327,21 +333,21 @@ func Zip(resolvedVersion string) (_ *zip.Reader, resolvedVersion2 string, commit
if err != nil {
return nil, "", time.Time{}, err
}
- if resolvedVersion == "master" {
- resolvedVersion = newPseudoVersion("v0.0.0", commit.Committer.When, commit.Hash)
+ if requestedVersion == "master" {
+ requestedVersion = newPseudoVersion("v0.0.0", commit.Committer.When, commit.Hash)
}
root, err := repo.TreeObject(commit.TreeHash)
if err != nil {
return nil, "", time.Time{}, err
}
- prefixPath := ModulePath + "@" + resolvedVersion
+ prefixPath := ModulePath + "@" + requestedVersion
// Add top-level files.
if err := addFiles(z, repo, root, prefixPath, false); err != nil {
return nil, "", time.Time{}, err
}
// Add files from the stdlib directory.
libdir := root
- for _, d := range strings.Split(Directory(resolvedVersion), "/") {
+ for _, d := range strings.Split(Directory(requestedVersion), "/") {
libdir, err = subTree(repo, libdir, d)
if err != nil {
return nil, "", time.Time{}, err
@@ -358,7 +364,7 @@ func Zip(resolvedVersion string) (_ *zip.Reader, resolvedVersion2 string, commit
if err != nil {
return nil, "", time.Time{}, err
}
- return zr, resolvedVersion, commit.Committer.When, nil
+ return zr, requestedVersion, commit.Committer.When, nil
}
func newPseudoVersion(version string, commitTime time.Time, hash plumbing.Hash) string {