aboutsummaryrefslogtreecommitdiffhomepage
path: root/cmd/mbf/internal/pkgserver/index.go
diff options
context:
space:
mode:
authorOphestra <cat@gensokyo.uk>2026-05-17 13:07:12 +0900
committerOphestra <cat@gensokyo.uk>2026-05-17 15:56:53 +0900
commit30eb0d6a613ad268f6805ccbcdcabf158e7f526f (patch)
tree07e55baa52748fd139e183017eeb43f5f64cee59 /cmd/mbf/internal/pkgserver/index.go
parentc2ff9c9fa55ea569a5e70ee90d2eb0b2ee2a0540 (diff)
internal/rosa: key metadata by string
For upcoming azalea integration. The API is quite ugly right now to ease migration. Signed-off-by: Ophestra <cat@gensokyo.uk>
Diffstat (limited to 'cmd/mbf/internal/pkgserver/index.go')
-rw-r--r--cmd/mbf/internal/pkgserver/index.go22
1 files changed, 12 insertions, 10 deletions
diff --git a/cmd/mbf/internal/pkgserver/index.go b/cmd/mbf/internal/pkgserver/index.go
index 911183da..5711f810 100644
--- a/cmd/mbf/internal/pkgserver/index.go
+++ b/cmd/mbf/internal/pkgserver/index.go
@@ -23,7 +23,7 @@ const (
// packageIndex refers to metadata by name and various sort orders.
type packageIndex struct {
- sorts [sortOrderEnd + 1][rosa.PresetUnexportedStart]*metadata
+ sorts [sortOrderEnd + 1][]*metadata
names map[string]*metadata
search searchCache
// Taken from [rosa.Report] if available.
@@ -32,8 +32,8 @@ type packageIndex struct {
// metadata holds [rosa.Metadata] extended with additional information.
type metadata struct {
- p rosa.PArtifact
- *rosa.Metadata
+ handle rosa.ArtifactH
+ *rosa.Artifact
// Populated via [rosa.Toolchain.Version], [rosa.Unversioned] is equivalent
// to the zero value. Otherwise, the zero value is invalid.
@@ -56,15 +56,17 @@ func (index *packageIndex) populate(report *rosa.Report) (err error) {
index.handleAccess = report.HandleAccess
}
- var work [rosa.PresetUnexportedStart]*metadata
+ handles := rosa.Native().Collect()
+ work := make([]*metadata, len(handles))
index.names = make(map[string]*metadata)
ir := pkg.NewIR()
- for p := range rosa.PresetUnexportedStart {
+ for i, handle := range handles {
+ a, version := rosa.Native().Load(rosa.Std, handle)
m := metadata{
- p: p,
+ handle: handle,
- Metadata: rosa.GetMetadata(p),
- Version: rosa.Std.Version(p),
+ Artifact: rosa.Native().MustGet(handle),
+ Version: version,
}
if m.Version == "" {
return errors.New("invalid version from " + m.Name)
@@ -74,13 +76,13 @@ func (index *packageIndex) populate(report *rosa.Report) (err error) {
}
if report != nil {
- id := ir.Ident(rosa.Std.Load(p))
+ id := ir.Ident(a)
m.ids = pkg.Encode(id.Value())
m.status, m.Size = report.ArtifactOf(id)
m.HasReport = m.Size >= 0
}
- work[p] = &m
+ work[i] = &m
index.names[m.Name] = &m
}