Feat v0.9.2 converter consolidation (#75)
All checks were successful
CI/CD / detect-changes (push) Successful in 4s
CI/CD / test-frontend (push) Has been skipped
CI/CD / test-runners (push) Has been skipped
CI/CD / e2e-smoke (push) Has been skipped
CI/CD / test-go-pg (push) Successful in 2m51s
CI/CD / test-sqlite (push) Successful in 3m1s
CI/CD / build-and-deploy (push) Successful in 1m17s

Co-authored-by: Jeffrey Smith <jasafpro@gmail.com>
Co-committed-by: Jeffrey Smith <jasafpro@gmail.com>
This commit was merged in pull request #75.
This commit is contained in:
2026-04-03 14:32:14 +00:00
committed by xcaliber
parent d03dfe502f
commit 983d761bbe
24 changed files with 362 additions and 479 deletions

View File

@@ -112,7 +112,7 @@ func workflowGetInstance(ctx context.Context, stores store.Stores) func(*starlar
if json.Unmarshal(inst.StageData, &dataMap) == nil {
starlarkData := starlark.NewDict(len(dataMap))
for k, v := range dataMap {
starlarkData.SetKey(starlark.String(k), goValToStarlark(v))
starlarkData.SetKey(starlark.String(k), GoToStarlark(v))
}
d.SetKey(starlark.String("stage_data"), starlarkData)
} else {
@@ -155,36 +155,5 @@ func workflowListInstances(ctx context.Context, stores store.Stores) func(*starl
}
}
// goValToStarlark converts a Go value to a Starlark value.
func goValToStarlark(v interface{}) starlark.Value {
switch val := v.(type) {
case nil:
return starlark.None
case bool:
return starlark.Bool(val)
case float64:
if val == float64(int(val)) {
return starlark.MakeInt(int(val))
}
return starlark.Float(val)
case string:
return starlark.String(val)
case map[string]interface{}:
d := starlark.NewDict(len(val))
for k, v := range val {
d.SetKey(starlark.String(k), goValToStarlark(v))
}
return d
case []interface{}:
elems := make([]starlark.Value, len(val))
for i, v := range val {
elems[i] = goValToStarlark(v)
}
return starlark.NewList(elems)
default:
return starlark.String(fmt.Sprintf("%v", v))
}
}
// workflowRoute routes the workflow to a named stage.
// Starlark: workflow.route(instance_id, target_stage, reason)