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 }