feat: engine -> process, engine is now a factory for a proces

This commit is contained in:
2026-02-05 14:20:30 -05:00
parent 5f6a9f9663
commit 22e8a99362
7 changed files with 90 additions and 41 deletions

View File

@@ -1,14 +1,9 @@
package cli
import (
"fmt"
"git.maximhutz.com/max/lambda/pkg/engine"
)
import "git.maximhutz.com/max/lambda/pkg/engine"
type Engine interface {
engine.Engine[Repr]
Load() Process
Name() string
InType() string
}
@@ -19,31 +14,14 @@ type convertedEngine[T any] struct {
inType string
}
func (b convertedEngine[T]) InType() string { return b.inType }
func (e convertedEngine[T]) InType() string { return e.inType }
func (b convertedEngine[T]) Name() string { return b.name }
func (e convertedEngine[T]) Name() string { return e.name }
func (b convertedEngine[T]) Get() (Repr, error) {
s, err := b.engine.Get()
if err != nil {
return nil, err
}
return NewRepr(b.inType, s), nil
func (e convertedEngine[T]) Load() Process {
return convertedProcess[T]{e.engine.Load(), e.inType}
}
func (b convertedEngine[T]) Set(r Repr) error {
if t, ok := r.Data().(T); ok {
return b.engine.Set(t)
}
return fmt.Errorf("Incorrent format '%s' for engine '%s'.", r.Id(), b.inType)
}
func (b convertedEngine[T]) Step(i int) bool {
return b.engine.Step(i)
}
func ConvertEngine[T any](e engine.Engine[T], name string, inType string) Engine {
return convertedEngine[T]{e, name, inType}
func ConvertEngine[T any](e engine.Engine[T], name, inType string) Engine {
return &convertedEngine[T]{e, name, inType}
}