buildr/internal/execution/local/provider.go

38 lines
805 B
Go
Raw Permalink Normal View History

2023-04-11 20:30:48 +00:00
package local
import (
"fmt"
"code.icb4dc0.de/buildr/buildr/modules/state"
2023-04-11 20:30:48 +00:00
"code.icb4dc0.de/buildr/buildr/internal/execution"
"code.icb4dc0.de/buildr/buildr/modules"
)
var _ execution.TaskProvider = (*taskProvider)(nil)
func Provider(stateStore state.Store) execution.TaskProvider {
return taskProvider{
stateStore: stateStore,
}
2023-04-11 20:30:48 +00:00
}
type taskProvider struct {
stateStore state.Store
}
2023-04-11 20:30:48 +00:00
func (taskProvider) CanProvide(m modules.ModuleWithMeta) bool {
return m.ContainerSpec() == nil
2023-04-11 20:30:48 +00:00
}
func (p taskProvider) Create(m modules.ModuleWithMeta) (execution.Task, error) {
if m.ContainerSpec() != nil {
return nil, fmt.Errorf("module %v has a container spec - should be handled differently", m.Name())
2023-04-11 20:30:48 +00:00
} else {
return &localTask{
module: m,
stateStore: p.stateStore,
2023-04-11 20:30:48 +00:00
}, nil
}
}