package container import ( "fmt" "code.icb4dc0.de/buildr/buildr/modules/state" "code.icb4dc0.de/buildr/buildr/internal/containers" "code.icb4dc0.de/buildr/buildr/internal/execution" "code.icb4dc0.de/buildr/buildr/modules" ) var _ execution.TaskProvider = (*taskProvider)(nil) func Provider(orchestrator *containers.Orchestrator, repo *modules.Repository, stateStore state.Store) execution.TaskProvider { return taskProvider{ orchestrator: orchestrator, repo: repo, stateStore: stateStore, } } type taskProvider struct { orchestrator *containers.Orchestrator repo *modules.Repository stateStore state.Store } func (taskProvider) CanProvide(m modules.ModuleWithMeta) bool { return m.ContainerSpec() != nil } func (p taskProvider) Create(m modules.ModuleWithMeta) (execution.Task, error) { if m.ContainerSpec() == nil { return nil, fmt.Errorf("module %v doesn't have a container spec - should be handled differently", m.Name()) } else { return &containerTask{ moduleWithMeta: m, orchestrator: p.orchestrator, repo: p.repo, stateStore: p.stateStore, }, nil } }