rework pipeline

This commit is contained in:
2022-10-30 18:13:57 +01:00
parent cadac9fc08
commit 2b641df577
15 changed files with 345 additions and 52 deletions

44
pkg/pipelines/pipeline.go Normal file
View File

@@ -0,0 +1,44 @@
package pipelines
import (
"context"
"git.front.kjuulh.io/kjuulh/byg"
"git.front.kjuulh.io/kjuulh/dagger-go/internal"
"golang.org/x/sync/errgroup"
)
type Pipeline struct {
builder *internal.Builder
pipelines []*byg.Builder
}
func New(builder *internal.Builder) *Pipeline {
return &Pipeline{builder: builder}
}
func (p *Pipeline) WithCustom(custom func(p *Pipeline) *byg.Builder) {
p.add(custom(p))
}
func (p *Pipeline) Execute(ctx context.Context) error {
errgroup, ctx := errgroup.WithContext(ctx)
for _, pipeline := range p.pipelines {
pipeline := pipeline // Allocate for closure
errgroup.Go(func() error {
return pipeline.Execute(ctx)
})
}
if err := errgroup.Wait(); err != nil {
return err
}
return nil
}
func (p *Pipeline) add(pipeline *byg.Builder) {
p.pipelines = append(p.pipelines, pipeline)
}