21 lines
411 B
Go
21 lines
411 B
Go
package workflow
|
|
|
|
import (
|
|
"bytes"
|
|
"encoding/json"
|
|
"fmt"
|
|
|
|
"g.fc.run/ai/byre/internal/api"
|
|
)
|
|
|
|
func Parse(data []byte) (api.WorkflowDefinition, error) {
|
|
def := api.WorkflowDefinition{}
|
|
dec := json.NewDecoder(bytes.NewReader(data))
|
|
dec.DisallowUnknownFields()
|
|
err := dec.Decode(&def)
|
|
if err != nil {
|
|
return api.WorkflowDefinition{}, fmt.Errorf("%w: %v", ErrInvalid, err)
|
|
}
|
|
return def, Validate(def)
|
|
}
|