internal/{fetch,worker,stdlib}: remove stdlib.Zip
For golang/go#47834
Change-Id: I81acf4fdc51a19352bfa7fb0cf9a2c22bb42a65b
Reviewed-on: https://go-review.googlesource.com/c/pkgsite/+/343966
Trust: Jonathan Amsterdam <jba@google.com>
Run-TryBot: Jonathan Amsterdam <jba@google.com>
TryBot-Result: kokoro <noreply+kokoro@google.com>
Reviewed-by: Jamal Carvalho <jamal@golang.org>
diff --git a/internal/fetch/fetch.go b/internal/fetch/fetch.go
index d5ce057..3833379 100644
--- a/internal/fetch/fetch.go
+++ b/internal/fetch/fetch.go
@@ -6,7 +6,6 @@
package fetch
import (
- "archive/zip"
"context"
"errors"
"fmt"
@@ -187,19 +186,8 @@
var contentDir fs.FS
if fr.ModulePath == stdlib.ModulePath {
- var (
- resolvedVersion string
- zr *zip.Reader
- )
- zr, resolvedVersion, commitTime, err = stdlib.Zip(fr.RequestedVersion)
- if err != nil {
- return fi, err
- }
- v := resolvedVersion
- if stdlib.SupportedBranches[fr.RequestedVersion] {
- v = fr.RequestedVersion
- }
- contentDir, err = fs.Sub(zr, fr.ModulePath+"@"+v)
+ var resolvedVersion string
+ contentDir, resolvedVersion, commitTime, err = stdlib.ContentDir(fr.RequestedVersion)
if err != nil {
return fi, err
}
diff --git a/internal/fetch/helper_test.go b/internal/fetch/helper_test.go
index bb9f2e1..2af4b05 100644
--- a/internal/fetch/helper_test.go
+++ b/internal/fetch/helper_test.go
@@ -5,8 +5,8 @@
package fetch
import (
- "archive/zip"
"context"
+ "io/fs"
"net/http"
"os"
"sort"
@@ -188,16 +188,20 @@
func licenseDetector(ctx context.Context, t *testing.T, modulePath, version string, proxyClient *proxy.Client) *licenses.Detector {
t.Helper()
var (
- zipReader *zip.Reader
- err error
+ contentDir fs.FS
+ err error
)
if modulePath == stdlib.ModulePath {
- zipReader, _, _, err = stdlib.Zip(version)
+ contentDir, _, _, err = stdlib.ContentDir(version)
if err != nil {
t.Fatal(err)
}
} else {
- zipReader, err = proxyClient.Zip(ctx, modulePath, version)
+ zipReader, err := proxyClient.Zip(ctx, modulePath, version)
+ if err != nil {
+ t.Fatal(err)
+ }
+ contentDir, err = fs.Sub(zipReader, modulePath+"@"+version)
if err != nil {
t.Fatal(err)
}
@@ -205,7 +209,7 @@
logf := func(format string, args ...interface{}) {
log.Infof(ctx, format, args...)
}
- return licenses.NewDetector(modulePath, version, zipReader, logf)
+ return licenses.NewDetectorFS(modulePath, version, contentDir, logf)
}
func sortFetchResult(fr *FetchResult) {
diff --git a/internal/fetch/readme_test.go b/internal/fetch/readme_test.go
index a5b850f..428cfa7 100644
--- a/internal/fetch/readme_test.go
+++ b/internal/fetch/readme_test.go
@@ -5,7 +5,6 @@
package fetch
import (
- "archive/zip"
"context"
"io/fs"
"sort"
@@ -84,11 +83,11 @@
} {
t.Run(test.name, func(t *testing.T) {
var (
- reader *zip.Reader
- err error
+ contentDir fs.FS
+ err error
)
if test.modulePath == stdlib.ModulePath {
- reader, _, _, err = stdlib.Zip(test.version)
+ contentDir, _, _, err = stdlib.ContentDir(test.version)
if err != nil {
t.Fatal(err)
}
@@ -96,14 +95,14 @@
proxyClient, teardownProxy := proxytest.SetupTestClient(t, []*proxytest.Module{
{ModulePath: test.modulePath, Files: test.files}})
defer teardownProxy()
- reader, err = proxyClient.Zip(ctx, test.modulePath, "v1.0.0")
+ reader, err := proxyClient.Zip(ctx, test.modulePath, "v1.0.0")
if err != nil {
t.Fatal(err)
}
- }
- contentDir, err := fs.Sub(reader, test.modulePath+"@"+test.version)
- if err != nil {
- t.Fatal(err)
+ contentDir, err = fs.Sub(reader, test.modulePath+"@v1.0.0")
+ if err != nil {
+ t.Fatal(err)
+ }
}
got, err := extractReadmes(test.modulePath, test.version, contentDir)
if err != nil {
diff --git a/internal/stdlib/stdlib.go b/internal/stdlib/stdlib.go
index c1f7ffe..08fc407 100644
--- a/internal/stdlib/stdlib.go
+++ b/internal/stdlib/stdlib.go
@@ -313,29 +313,6 @@
return resolvedVersion, nil
}
-// Zip creates a module zip representing the entire Go standard library at the
-// given version (which must have been resolved with ZipInfo) and returns a
-// reader to it. It also returns the time of the commit for that version. The
-// zip file is in module form, with each path prefixed by ModuleName + "@" +
-// version.
-//
-// Normally, Zip returns the resolved version it was passed. If the resolved
-// version is version.Master, Zip returns a semantic version for the branch.
-//
-// Zip reads the standard library at the Go repository tag corresponding to to
-// the given semantic version.
-//
-// 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(requestedVersion string) (_ *zip.Reader, resolvedVersion 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)", requestedVersion)
-
- zr, resolvedVersion, commitTime, _, err := zipInternal(requestedVersion)
- return zr, resolvedVersion, commitTime, err
-}
-
func zipInternal(requestedVersion string) (_ *zip.Reader, resolvedVersion string, commitTime time.Time, prefix string, err error) {
var repo *git.Repository
if UseTestData {
diff --git a/internal/worker/server.go b/internal/worker/server.go
index 156dfe0..64a3c4f 100644
--- a/internal/worker/server.go
+++ b/internal/worker/server.go
@@ -482,7 +482,7 @@
func (s *Server) handleFetchStdSupportedBranches(w http.ResponseWriter, r *http.Request) (err error) {
defer derrors.Wrap(&err, "handleFetchStdSupportedBranches")
for requestedVersion := range stdlib.SupportedBranches {
- _, resolvedVersion, _, err := stdlib.Zip(requestedVersion)
+ _, resolvedVersion, _, err := stdlib.ContentDir(requestedVersion)
if err != nil {
return err
}