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 }