buildr/internal/execution/local/provider.go
Peter fee941a0e4
feat(state): introduce SQLite based state store
Allow modules to keep a state of their latest execution and skp if not necessary
2023-05-02 18:44:47 +02:00

38 lines
805 B
Go

package local
import (
"fmt"
"code.icb4dc0.de/buildr/buildr/modules/state"
"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,
}
}
type taskProvider struct {
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 has a container spec - should be handled differently", m.Name())
} else {
return &localTask{
module: m,
stateStore: p.stateStore,
}, nil
}
}