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
 		}