in pkg/function/main.go [33:77]
func main[T Inputs](fn SynthFunc[T], ir *InputReader, ow *OutputWriter) error {
var inputs T
v := reflect.ValueOf(&inputs).Elem()
t := v.Type()
// Read the inputs
for i := 0; i < t.NumField(); i++ {
tagValue := t.Field(i).Tag.Get("eno_key")
if tagValue == "" {
continue
}
input, err := newInput(ir, v.Field(i))
if err != nil {
return err
}
err = ReadInput(ir, tagValue, input.Object)
if err != nil {
ow.AddResult(&krmv1.Result{
Message: fmt.Sprintf("error while reading input with key %q: %s", tagValue, err),
Severity: krmv1.ResultSeverityError,
})
return ow.Write()
}
input.Finalize()
}
// Call the fn and handle errors through the KRM interface
outputs, err := fn(inputs)
if err != nil {
ow.AddResult(&krmv1.Result{
Message: err.Error(),
Severity: krmv1.ResultSeverityError,
})
return ow.Write()
}
// Write the outputs
for _, out := range outputs {
ow.Add(out)
}
return ow.Write()
}