From 5c785c135cc6c9e0f478b58d6d30499680808f25 Mon Sep 17 00:00:00 2001 From: Ophestra Date: Fri, 13 Mar 2026 10:34:24 +0900 Subject: [PATCH] internal/rosa: collection meta-artifact This is a stub FloodArtifact for concurrently curing multiple artifacts. Signed-off-by: Ophestra --- internal/rosa/rosa.go | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/internal/rosa/rosa.go b/internal/rosa/rosa.go index 060a23b..2162380 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 }