From 4a63fbbc2a462955a2cf8f0e0cb0f18c0b0d7f4e Mon Sep 17 00:00:00 2001 From: Ophestra Date: Tue, 10 Mar 2026 22:31:59 +0900 Subject: [PATCH] cmd/pkgserver: create index without report This is useful for testing, where report testdata is not available. Signed-off-by: Ophestra --- cmd/pkgserver/index.go | 32 +++++++++++++++++--------------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/cmd/pkgserver/index.go b/cmd/pkgserver/index.go index 3768d08..b24f3fa 100644 --- a/cmd/pkgserver/index.go +++ b/cmd/pkgserver/index.go @@ -34,32 +34,34 @@ type PackageIndexEntry struct { status []byte `json:"-"` } -func createPackageIndex(cache *pkg.Cache, report *rosa.Report) (_ *PackageIndex, err error) { - index := new(PackageIndex) +func createPackageIndex(cache *pkg.Cache, report *rosa.Report) (index *PackageIndex, err error) { + index = new(PackageIndex) index.names = make(map[string]*PackageIndexEntry, rosa.PresetUnexportedStart) work := make([]PackageIndexEntry, rosa.PresetUnexportedStart) - defer report.HandleAccess(&err)() + if report != nil { + defer report.HandleAccess(&err)() + } + for p := range rosa.PresetUnexportedStart { m := rosa.GetMetadata(p) v := rosa.Std.Version(p) a := rosa.Std.Load(p) - id := cache.Ident(a) - st, n := report.ArtifactOf(id) - var status []byte - if n < 1 { - status = nil - } else { - status = st - } entry := PackageIndexEntry{ Name: m.Name, Description: m.Description, Website: m.Website, Version: v, - HasReport: len(status) > 0, - ident: id, - status: status, } + + if cache != nil && report != nil { + entry.ident = cache.Ident(a) + status, n := report.ArtifactOf(entry.ident) + if n >= 0 { + entry.HasReport = true + entry.status = status + } + } + work[p] = entry index.names[m.Name] = &entry } @@ -80,5 +82,5 @@ func createPackageIndex(cache *pkg.Cache, report *rosa.Report) (_ *PackageIndex, for i, p := range work { index.sorts[NameDescending][i] = &p } - return index, err + return }