aboutsummaryrefslogtreecommitdiffhomepage
path: root/internal
diff options
context:
space:
mode:
authorOphestra <cat@gensokyo.uk>2026-03-13 10:34:24 +0900
committerOphestra <cat@gensokyo.uk>2026-03-13 10:34:45 +0900
commit5c785c135cc6c9e0f478b58d6d30499680808f25 (patch)
tree73c3f2ec965296e0d24a9d2b3b585e90380aac11 /internal
parent0130f8ea6d88b451ac218f97b07d10eb11ee2f71 (diff)
internal/rosa: collection meta-artifact
This is a stub FloodArtifact for concurrently curing multiple artifacts. Signed-off-by: Ophestra <cat@gensokyo.uk>
Diffstat (limited to 'internal')
-rw-r--r--internal/rosa/rosa.go29
1 files changed, 29 insertions, 0 deletions
diff --git a/internal/rosa/rosa.go b/internal/rosa/rosa.go
index 060a23b4..21623808 100644
--- a/internal/rosa/rosa.go
+++ b/internal/rosa/rosa.go
@@ -20,6 +20,9 @@ const (
// kindBusyboxBin is the kind of [pkg.Artifact] of busyboxBin.
kindBusyboxBin
+
+ // kindCollection is the kind of [Collect]. It never cures successfully.
+ kindCollection
)
// mustDecode is like [pkg.MustDecode], but replaces the zero value and prints
@@ -588,3 +591,29 @@ cd '/usr/src/` + name + `/'
})...,
)
}
+
+// Collected is returned by [Collect.Cure] to indicate a successful collection.
+type Collected struct{}
+
+// Error returns a constant string to satisfy error, but should never be seen
+// by the user.
+func (Collected) Error() string { return "artifacts successfully collected" }
+
+// Collect implements [pkg.FloodArtifact] to concurrently cure multiple
+// [pkg.Artifact]. It returns [Collected].
+type Collect []pkg.Artifact
+
+// Cure returns [Collected].
+func (*Collect) Cure(*pkg.FContext) error { return Collected{} }
+
+// Kind returns the hardcoded [pkg.Kind] value.
+func (*Collect) Kind() pkg.Kind { return kindCollection }
+
+// Params does not write anything, dependencies are already represented in the header.
+func (*Collect) Params(*pkg.IContext) {}
+
+// Dependencies returns [Collect] as is.
+func (c *Collect) Dependencies() []pkg.Artifact { return *c }
+
+// IsExclusive returns false: Cure is a noop.
+func (*Collect) IsExclusive() bool { return false }