internal/frontend: add NestedModules field to Directory struct
This change adds NestedModules to the directory struct in order to later
render the data in the subdirectories page of a package. We also modify
the createDirectory function to take in a nestedModules parameter.
Updates golang/go#38596
Change-Id: I9bcfc1f2aa37ac0b03b5def4b237473310690af6
Reviewed-on: https://go-review.googlesource.com/c/pkgsite/+/254018
Reviewed-by: Jonathan Amsterdam <jba@google.com>
Reviewed-by: Julie Qiu <julie@golang.org>
diff --git a/internal/frontend/directory.go b/internal/frontend/directory.go
index 7450401..f3adc1d 100644
--- a/internal/frontend/directory.go
+++ b/internal/frontend/directory.go
@@ -34,7 +34,8 @@
// Directory contains information for an individual directory.
type Directory struct {
DirectoryHeader
- Packages []*Package
+ Packages []*Package
+ NestedModules []*internal.ModuleInfo
}
// serveDirectoryPage serves a directory view for a directory in a module
@@ -110,7 +111,11 @@
header := createDirectoryHeader(um.Path, mi, um.Licenses)
return &Directory{DirectoryHeader: *header}, nil
}
- return createDirectory(um.Path, mi, u.Subdirectories, um.Licenses, includeDirPath)
+ nestedModules, err := ds.GetNestedModules(ctx, um.Path)
+ if err != nil {
+ return nil, err
+ }
+ return createDirectory(um.Path, mi, u.Subdirectories, nestedModules, um.Licenses, includeDirPath)
}
// createDirectory constructs a *Directory for the given dirPath.
@@ -122,7 +127,7 @@
// the module path. However, on the package and directory view's
// "Subdirectories" tab, we do not want to include packages whose import paths
// are the same as the dirPath.
-func createDirectory(dirPath string, mi *internal.ModuleInfo, pkgMetas []*internal.PackageMeta,
+func createDirectory(dirPath string, mi *internal.ModuleInfo, pkgMetas []*internal.PackageMeta, nestedModules []*internal.ModuleInfo,
licmetas []*licenses.Metadata, includeDirPath bool) (_ *Directory, err error) {
var packages []*Package
for _, pm := range pkgMetas {
@@ -146,6 +151,7 @@
return &Directory{
DirectoryHeader: *header,
Packages: packages,
+ NestedModules: nestedModules,
}, nil
}
diff --git a/internal/frontend/directory_test.go b/internal/frontend/directory_test.go
index ef69392..71256fe 100644
--- a/internal/frontend/directory_test.go
+++ b/internal/frontend/directory_test.go
@@ -57,7 +57,8 @@
Path: dirPath,
URL: constructDirectoryURL(dirPath, mi.ModulePath, linkVersion(mi.Version, mi.ModulePath)),
},
- Packages: wantPkgs,
+ Packages: wantPkgs,
+ NestedModules: nil,
}
if diff := cmp.Diff(want, got, cmp.AllowUnexported(safehtml.Identifier{})); diff != "" {
t.Errorf("fetchDirectoryDetails(ctx, %q, %q, %q) mismatch (-want +got):\n%s", dirPath, modulePath, version, diff)
diff --git a/internal/frontend/legacy_directory.go b/internal/frontend/legacy_directory.go
index ed380fa..0bf18d6 100644
--- a/internal/frontend/legacy_directory.go
+++ b/internal/frontend/legacy_directory.go
@@ -66,5 +66,5 @@
newPkg := packageMetaFromLegacyPackage(pkg)
packages = append(packages, newPkg)
}
- return createDirectory(dbDir.Path, &dbDir.ModuleInfo, packages, licmetas, includeDirPath)
+ return createDirectory(dbDir.Path, &dbDir.ModuleInfo, packages, nil, licmetas, includeDirPath)
}