From a470123d58cada98cd9a979dbab4cb6488fd5c19 Mon Sep 17 00:00:00 2001 From: Miguel Acero Date: Thu, 10 Sep 2020 15:05:56 -0400 Subject: [PATCH] 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 Reviewed-by: Julie Qiu --- internal/frontend/directory.go | 12 +++++++++--- internal/frontend/directory_test.go | 3 ++- internal/frontend/legacy_directory.go | 2 +- 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/internal/frontend/directory.go b/internal/frontend/directory.go index 7450401ca..f3adc1ded 100644 --- a/internal/frontend/directory.go +++ b/internal/frontend/directory.go @@ -34,7 +34,8 @@ type DirectoryHeader struct { // 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 @@ func fetchDirectoryDetails(ctx context.Context, ds internal.DataSource, um *inte 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 @@ func fetchDirectoryDetails(ctx context.Context, ds internal.DataSource, um *inte // 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 @@ func createDirectory(dirPath string, mi *internal.ModuleInfo, pkgMetas []*intern return &Directory{ DirectoryHeader: *header, Packages: packages, + NestedModules: nestedModules, }, nil } diff --git a/internal/frontend/directory_test.go b/internal/frontend/directory_test.go index ef693924b..71256fe8a 100644 --- a/internal/frontend/directory_test.go +++ b/internal/frontend/directory_test.go @@ -57,7 +57,8 @@ func TestFetchDirectoryDetails(t *testing.T) { 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 ed380fa0f..0bf18d643 100644 --- a/internal/frontend/legacy_directory.go +++ b/internal/frontend/legacy_directory.go @@ -66,5 +66,5 @@ func legacyCreateDirectory(dbDir *internal.LegacyDirectory, licmetas []*licenses 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) }