ci-platforms / darwin amd64 smoke (push) Skipped
ci / build (amd64, linux, ubuntu-24.04) (push) Failing after 15m28s
ci / release (push) Skipped
ci-platforms / windows amd64 smoke (push) Skipped
ci-platforms / darwin arm64 smoke (push) Skipped
ci / checks (push) Successful in 7m47s
38 lines
744 B
Go
38 lines
744 B
Go
package module
|
|
|
|
type Provision struct {
|
|
Owner string
|
|
Value any
|
|
}
|
|
|
|
type provision struct {
|
|
kind string
|
|
Provision
|
|
}
|
|
|
|
func (r *Registry) Provide(kind string, v any) {
|
|
if kind == "" || v == nil {
|
|
r.fail("provision needs a kind and a value")
|
|
return
|
|
}
|
|
r.provided = append(r.provided, provision{kind: kind, Provision: Provision{Owner: r.Owner(), Value: v}})
|
|
}
|
|
|
|
func (r *Registry) Provided(kind string) []Provision {
|
|
return provisions(r.provided, kind)
|
|
}
|
|
|
|
func (m *Manifest) Provided(kind string) []Provision {
|
|
return provisions(m.provided, kind)
|
|
}
|
|
|
|
func provisions(source []provision, kind string) []Provision {
|
|
var out []Provision
|
|
for _, p := range source {
|
|
if p.kind == kind {
|
|
out = append(out, p.Provision)
|
|
}
|
|
}
|
|
return out
|
|
}
|