Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion cmd/cmd_validate.go
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ func validateGraph(filePath string) error {
return err
}

_, errs := core.LoadGraph(graphYaml, nil, "", true)
_, errs := core.LoadGraph(graphYaml, nil, "", true, core.RunOpts{})

if len(errs) > 0 {
fmt.Printf("\n❌ Validation failed with %d error(s):\n", len(errs))
Expand Down
10 changes: 5 additions & 5 deletions core/base.go
Original file line number Diff line number Diff line change
Expand Up @@ -287,7 +287,7 @@ func LogDebugInfoForGh(t GetNameIdInterface) {
)
}

type nodeFactoryFunc func(ctx any, parent NodeBaseInterface, parentId string, nodeDef map[string]any, validate bool) (NodeBaseInterface, []error)
type nodeFactoryFunc func(ctx any, parent NodeBaseInterface, parentId string, nodeDef map[string]any, validate bool, opts RunOpts) (NodeBaseInterface, []error)

var registries = make(map[string]NodeTypeDefinitionFull)

Expand Down Expand Up @@ -585,13 +585,13 @@ func RegisterNodeFactory(nodeDefStr string, fn nodeFactoryFunc) error {
return nil
}

func NewGhActionNode(nodeType string, parent NodeBaseInterface, parentId string, validate bool) (NodeBaseInterface, []error) {
func NewGhActionNode(nodeType string, parent NodeBaseInterface, parentId string, validate bool, opts RunOpts) (NodeBaseInterface, []error) {
factoryEntry, exists := registries["core/gh-action@v1"]
if !exists {
return nil, []error{CreateErr(nil, nil, "node type '%v' not registered", nodeType)}
}

node, errs := factoryEntry.FactoryFn(nodeType, parent, parentId, nil, validate)
node, errs := factoryEntry.FactoryFn(nodeType, parent, parentId, nil, validate, opts)
if len(errs) > 0 {
return nil, errs
}
Expand All @@ -601,7 +601,7 @@ func NewGhActionNode(nodeType string, parent NodeBaseInterface, parentId string,
return node, nil
}

func NewNodeInstance(nodeType string, parent NodeBaseInterface, parentId string, nodeDef map[string]any, validate bool) (NodeBaseInterface, []error) {
func NewNodeInstance(nodeType string, parent NodeBaseInterface, parentId string, nodeDef map[string]any, validate bool, opts RunOpts) (NodeBaseInterface, []error) {
var (
node NodeBaseInterface
errs []error
Expand All @@ -616,7 +616,7 @@ func NewNodeInstance(nodeType string, parent NodeBaseInterface, parentId string,
factoryEntry, exists := registries[nodeType]
if exists {
// Pass 'validate' to the factory function
node, errs = factoryEntry.FactoryFn(nil, parent, parentId, nodeDef, validate)
node, errs = factoryEntry.FactoryFn(nil, parent, parentId, nodeDef, validate, opts)
if len(errs) > 0 {
// If the factory failed to produce a node (or found errors), return them.
return nil, errs
Expand Down
61 changes: 39 additions & 22 deletions core/graph.go
Original file line number Diff line number Diff line change
Expand Up @@ -276,7 +276,7 @@ func RunGraph(ctx context.Context, graphName string, graphContent []byte, opts R
return CreateErr(nil, err, "failed to load yaml")
}

ag, errs := LoadGraph(graphYaml, nil, "", false)
ag, errs := LoadGraph(graphYaml, nil, "", false, opts)
if len(errs) > 0 {
return CreateErr(nil, errs[0], "failed to load graph")
}
Expand All @@ -287,8 +287,23 @@ func RunGraph(ctx context.Context, graphName string, graphContent []byte, opts R
}

entryNode, isBaseNode := entry.(NodeBaseInterface)
isGitHubAction := os.Getenv("GITHUB_ACTIONS") == "true"
isGitHubWorkflow := isBaseNode && entryNode.GetNodeTypeId() == "core/gh-start@v1"

// isGitHubActions: Determines if this run should behave as a GitHub Action.
// True when either running on actual GitHub Actions (system env), or an external
// caller (e.g., web app) explicitly requests GitHub Actions behavior via OverrideEnv.
// This affects input variable handling, context loading, and other GitHub-specific behavior.
//
// **Important** we haven't loaded the config file yet, so we can only look at overriden envs,
// .env (already set in os.GetEnv) or shell.
isGitHubActions := opts.OverrideEnv["GITHUB_ACTIONS"] == "true" || os.Getenv("GITHUB_ACTIONS") == "true" || entryNode.GetNodeTypeId() == "core/gh-start@v1"

// mimickGitHubEnv: Determines if we need to set up a simulated GitHub environment. The easiest
// approach for now is to just check a bunch of env vars. The user may have set one or the other
// (through .env or shell) but unlikely all of them but they are by a real GitHub Actions runner.
mimickGitHubEnv := isGitHubActions && os.Getenv("GITHUB_RUN_ID") == "" &&
os.Getenv("RUNNER_TEMP") == "" &&
os.Getenv("GITHUB_API_URL") == "" &&
os.Getenv("GITHUB_RETENTION_DAYS") == ""

// Initialize trackers with their respective categories
envTracker := newValueMap[string]("env")
Expand All @@ -301,19 +316,21 @@ func RunGraph(ctx context.Context, graphName string, graphContent []byte, opts R
if opts.ConfigFile != "" {
if _, err := os.Stat(opts.ConfigFile); err == nil {
localConfig, err := utils.LoadConfig(opts.ConfigFile)
if err == nil {
configName := filepath.Base(opts.ConfigFile)
envTracker.set(localConfig.Env, configName, true, false)
inputTracker.set(localConfig.Inputs, configName, true, false)
secretTracker.set(localConfig.Secrets, configName, true, true)
if err != nil {
return CreateErr(nil, err, "failed to load config file")
}

configName := filepath.Base(opts.ConfigFile)
envTracker.set(localConfig.Env, configName, true, false)
inputTracker.set(localConfig.Inputs, configName, true, false)
secretTracker.set(localConfig.Secrets, configName, true, true)
}
}

rawEnv := utils.GetAllEnvMapCopy()

// normalize all inputs/secrets with ACT_* iif we're in GitHub
if isGitHubWorkflow {
if isGitHubActions {
prefixedRawEnv := make(map[string]utils.EnvKV)
for k, v := range rawEnv {
prefixedKey := k
Expand Down Expand Up @@ -366,15 +383,15 @@ func RunGraph(ctx context.Context, graphName string, graphContent []byte, opts R
secretTracker.setSingle(key, v.Value, fmt.Sprintf("%s (%s)", source, k), true, true)

// GitHub specifics
case isGitHubWorkflow && k == "ACT_INPUT_MATRIX":
case isGitHubActions && k == "ACT_INPUT_MATRIX":
if m, err := decodeJsonFromEnvValue[any](v.Value); err == nil {
matrixTracker.set(m, source, true, true)
}
case isGitHubWorkflow && k == "ACT_INPUT_NEEDS":
case isGitHubActions && k == "ACT_INPUT_NEEDS":
if m, err := decodeJsonFromEnvValue[any](v.Value); err == nil {
needsTracker.set(m, source, true, true)
}
case isGitHubWorkflow && k == "ACT_INPUT_TOKEN":
case isGitHubActions && k == "ACT_INPUT_TOKEN":
secretTracker.setSingle("GITHUB_TOKEN", v.Value, source, true, true)

default:
Expand Down Expand Up @@ -413,7 +430,7 @@ func RunGraph(ctx context.Context, graphName string, graphContent []byte, opts R
}()
}

if !isGitHubAction && isGitHubWorkflow {
if mimickGitHubEnv {
// If we are running a github actions workflow, then mimic a GitHub Actions environment
// But only do is if we are NOT already in GitHub Actions
err = SetupGitHubActionsEnv(finalEnv)
Expand All @@ -439,7 +456,7 @@ func RunGraph(ctx context.Context, graphName string, graphContent []byte, opts R
// construct the `github` context
var ghContext map[string]any
var errGh error
if isGitHubWorkflow {
if isGitHubActions {
ghContext, errGh = LoadGitHubContext(finalEnv, finalInputs, finalSecrets)
if errGh != nil {
return CreateErr(nil, errGh, "failed to load github context")
Expand All @@ -450,7 +467,7 @@ func RunGraph(ctx context.Context, graphName string, graphContent []byte, opts R
ctx,
&ag,
graphName,
isGitHubWorkflow,
isGitHubActions,
debugCb,
finalEnv,
finalInputs,
Expand All @@ -467,7 +484,7 @@ func RunGraph(ctx context.Context, graphName string, graphContent []byte, opts R
return entry.ExecuteEntry(c, nil, opts.Args)
}

func LoadGraph(graphYaml map[string]any, parent NodeBaseInterface, parentId string, validate bool) (ActionGraph, []error) {
func LoadGraph(graphYaml map[string]any, parent NodeBaseInterface, parentId string, validate bool, opts RunOpts) (ActionGraph, []error) {

var (
collectedErrors []error
Expand All @@ -492,7 +509,7 @@ func LoadGraph(graphYaml map[string]any, parent NodeBaseInterface, parentId stri
collectedErrors = append(collectedErrors, err)
}

err = LoadNodes(&ag, parent, parentId, graphYaml, validate, &collectedErrors)
err = LoadNodes(&ag, parent, parentId, graphYaml, validate, &collectedErrors, opts)
if err != nil && !validate {
return ActionGraph{}, []error{err}
}
Expand Down Expand Up @@ -570,14 +587,14 @@ func anyToPortDefinition[T any](o any) (T, error) {
return ret, err
}

func LoadNodes(ag *ActionGraph, parent NodeBaseInterface, parentId string, nodesYaml map[string]any, validate bool, errs *[]error) error {
func LoadNodes(ag *ActionGraph, parent NodeBaseInterface, parentId string, nodesYaml map[string]any, validate bool, errs *[]error, opts RunOpts) error {
nodesList, err := utils.GetTypedPropertyByPath[[]any](nodesYaml, "nodes")
if err != nil {
return collectOrReturn(err, validate, errs)
}

for _, nodeData := range nodesList {
n, id, err := LoadNode(parent, parentId, nodeData, validate, errs)
n, id, err := LoadNode(parent, parentId, nodeData, validate, errs, opts)
if err != nil {
return err
}
Expand All @@ -592,7 +609,7 @@ func LoadNodes(ag *ActionGraph, parent NodeBaseInterface, parentId string, nodes
return nil
}

func LoadNode(parent NodeBaseInterface, parentId string, nodeData any, validate bool, errs *[]error) (NodeBaseInterface, string, error) {
func LoadNode(parent NodeBaseInterface, parentId string, nodeData any, validate bool, errs *[]error, opts RunOpts) (NodeBaseInterface, string, error) {
nodeI, ok := nodeData.(map[string]any)
if !ok {
err := CreateErr(nil, nil, "node is not a map")
Expand Down Expand Up @@ -635,9 +652,9 @@ func LoadNode(parent NodeBaseInterface, parentId string, nodeData any, validate
fullPath = parentId + "/" + id
}
if strings.HasPrefix(nodeType, "github.com/") {
n, factoryErrs = NewGhActionNode(nodeType, parent, fullPath, validate)
n, factoryErrs = NewGhActionNode(nodeType, parent, fullPath, validate, opts)
} else {
n, factoryErrs = NewNodeInstance(nodeType, parent, fullPath, nodeI, validate)
n, factoryErrs = NewNodeInstance(nodeType, parent, fullPath, nodeI, validate, opts)
}

if len(factoryErrs) > 0 {
Expand Down
2 changes: 1 addition & 1 deletion nodes/affirm@v1.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ func (n *AffirmNode) OutputValueById(c *core.ExecutionState, outputId core.Outpu
}

func init() {
err := core.RegisterNodeFactory(affirmDefinition, func(ctx any, parent core.NodeBaseInterface, parentId string, nodeDef map[string]any, validate bool) (core.NodeBaseInterface, []error) {
err := core.RegisterNodeFactory(affirmDefinition, func(ctx any, parent core.NodeBaseInterface, parentId string, nodeDef map[string]any, validate bool, opts core.RunOpts) (core.NodeBaseInterface, []error) {
return &AffirmNode{}, nil
})
if err != nil {
Expand Down
2 changes: 1 addition & 1 deletion nodes/array-add@v1.go
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ func (n *ArrayAddNode) ExecuteImpl(c *core.ExecutionState, inputId core.InputId,
}

func init() {
err := core.RegisterNodeFactory(arrayAddNodeDefinition, func(ctx any, parent core.NodeBaseInterface, parentId string, nodeDef map[string]any, validate bool) (core.NodeBaseInterface, []error) {
err := core.RegisterNodeFactory(arrayAddNodeDefinition, func(ctx any, parent core.NodeBaseInterface, parentId string, nodeDef map[string]any, validate bool, opts core.RunOpts) (core.NodeBaseInterface, []error) {
return &ArrayAddNode{}, nil
})
if err != nil {
Expand Down
2 changes: 1 addition & 1 deletion nodes/array-append@v1.go
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ func (n *ArrayAppendNode) ExecuteImpl(c *core.ExecutionState, inputId core.Input
}

func init() {
err := core.RegisterNodeFactory(arrayAppendNodeDefinition, func(ctx any, parent core.NodeBaseInterface, parentId string, nodeDef map[string]any, validate bool) (core.NodeBaseInterface, []error) {
err := core.RegisterNodeFactory(arrayAppendNodeDefinition, func(ctx any, parent core.NodeBaseInterface, parentId string, nodeDef map[string]any, validate bool, opts core.RunOpts) (core.NodeBaseInterface, []error) {
return &ArrayAppendNode{}, nil
})
if err != nil {
Expand Down
2 changes: 1 addition & 1 deletion nodes/array-get@v1.go
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ func (n *ArrayGet) OutputValueById(c *core.ExecutionState, outputId core.OutputI
}

func init() {
err := core.RegisterNodeFactory(arrayGetDefinition, func(ctx any, parent core.NodeBaseInterface, parentId string, nodeDef map[string]any, validate bool) (core.NodeBaseInterface, []error) {
err := core.RegisterNodeFactory(arrayGetDefinition, func(ctx any, parent core.NodeBaseInterface, parentId string, nodeDef map[string]any, validate bool, opts core.RunOpts) (core.NodeBaseInterface, []error) {
return &ArrayGet{}, nil
})
if err != nil {
Expand Down
2 changes: 1 addition & 1 deletion nodes/bool@v1.go
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ func init() {
}

for _, op := range ops {
err := core.RegisterNodeFactory(op.definition, func(ctx any, parent core.NodeBaseInterface, parentId string, nodeDef map[string]any, validate bool) (core.NodeBaseInterface, []error) {
err := core.RegisterNodeFactory(op.definition, func(ctx any, parent core.NodeBaseInterface, parentId string, nodeDef map[string]any, validate bool, opts core.RunOpts) (core.NodeBaseInterface, []error) {
return &BoolNode{
op: op.op,
opStr: op.opStr,
Expand Down
2 changes: 1 addition & 1 deletion nodes/branch@v1.go
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ func (n *BranchNode) ExecuteImpl(c *core.ExecutionState, inputId core.InputId, p
}

func init() {
err := core.RegisterNodeFactory(ifDefinition, func(ctx any, parent core.NodeBaseInterface, parentId string, nodeDef map[string]any, validate bool) (core.NodeBaseInterface, []error) {
err := core.RegisterNodeFactory(ifDefinition, func(ctx any, parent core.NodeBaseInterface, parentId string, nodeDef map[string]any, validate bool, opts core.RunOpts) (core.NodeBaseInterface, []error) {
return &BranchNode{}, nil
})
if err != nil {
Expand Down
2 changes: 1 addition & 1 deletion nodes/comment@v1.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ type CommentNode struct {
}

func init() {
err := core.RegisterNodeFactory(commentNodeDefinition, func(ctx any, parent core.NodeBaseInterface, parentId string, nodeDef map[string]any, validate bool) (core.NodeBaseInterface, []error) {
err := core.RegisterNodeFactory(commentNodeDefinition, func(ctx any, parent core.NodeBaseInterface, parentId string, nodeDef map[string]any, validate bool, opts core.RunOpts) (core.NodeBaseInterface, []error) {
return &CommentNode{}, nil
})
if err != nil {
Expand Down
2 changes: 1 addition & 1 deletion nodes/concurrent-exec@v1.go
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ func (n *ConcurrentExecNode) ExecuteImpl(c *core.ExecutionState, inputId core.In
}

func init() {
err := core.RegisterNodeFactory(concurrentExecDefinition, func(ctx any, parent core.NodeBaseInterface, parentId string, nodeDef map[string]any, validate bool) (core.NodeBaseInterface, []error) {
err := core.RegisterNodeFactory(concurrentExecDefinition, func(ctx any, parent core.NodeBaseInterface, parentId string, nodeDef map[string]any, validate bool, opts core.RunOpts) (core.NodeBaseInterface, []error) {
return &ConcurrentExecNode{}, nil
})
if err != nil {
Expand Down
2 changes: 1 addition & 1 deletion nodes/concurrent-for-each-loop@v1.go
Original file line number Diff line number Diff line change
Expand Up @@ -128,7 +128,7 @@ func (n *ConcurrentForEachLoopNode) ExecuteImpl(c *core.ExecutionState, inputId
}

func init() {
err := core.RegisterNodeFactory(concurrentForEachLoopDefinition, func(ctx any, parent core.NodeBaseInterface, parentId string, nodeDef map[string]any, validate bool) (core.NodeBaseInterface, []error) {
err := core.RegisterNodeFactory(concurrentForEachLoopDefinition, func(ctx any, parent core.NodeBaseInterface, parentId string, nodeDef map[string]any, validate bool, opts core.RunOpts) (core.NodeBaseInterface, []error) {
return &ConcurrentForEachLoopNode{}, nil
})
if err != nil {
Expand Down
2 changes: 1 addition & 1 deletion nodes/concurrent-for-loop@v1.go
Original file line number Diff line number Diff line change
Expand Up @@ -139,7 +139,7 @@ func (n *ConcurrentLoopNode) ExecuteImpl(c *core.ExecutionState, inputId core.In
}

func init() {
err := core.RegisterNodeFactory(concurrentForLoopDefinition, func(ctx any, parent core.NodeBaseInterface, parentId string, nodeDef map[string]any, validate bool) (core.NodeBaseInterface, []error) {
err := core.RegisterNodeFactory(concurrentForLoopDefinition, func(ctx any, parent core.NodeBaseInterface, parentId string, nodeDef map[string]any, validate bool, opts core.RunOpts) (core.NodeBaseInterface, []error) {
return &ConcurrentLoopNode{}, nil
})
if err != nil {
Expand Down
6 changes: 3 additions & 3 deletions nodes/const@v1.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ func (n *ConstNode[T]) OutputValueById(c *core.ExecutionState, outputId core.Out
}

func init() {
err := core.RegisterNodeFactory(constStringDefinition, func(ctx any, parent core.NodeBaseInterface, parentId string, nodeDef map[string]any, validate bool) (core.NodeBaseInterface, []error) {
err := core.RegisterNodeFactory(constStringDefinition, func(ctx any, parent core.NodeBaseInterface, parentId string, nodeDef map[string]any, validate bool, opts core.RunOpts) (core.NodeBaseInterface, []error) {
return &ConstNode[string]{
portValue: ni.Core_const_string_v1_Input_value,
}, nil
Expand All @@ -42,7 +42,7 @@ func init() {
panic(err)
}

err = core.RegisterNodeFactory(constNumberDefinition, func(ctx any, parent core.NodeBaseInterface, parentId string, nodeDef map[string]any, validate bool) (core.NodeBaseInterface, []error) {
err = core.RegisterNodeFactory(constNumberDefinition, func(ctx any, parent core.NodeBaseInterface, parentId string, nodeDef map[string]any, validate bool, opts core.RunOpts) (core.NodeBaseInterface, []error) {
return &ConstNode[int64]{
portValue: ni.Core_const_number_v1_Input_value,
}, nil
Expand All @@ -51,7 +51,7 @@ func init() {
panic(err)
}

err = core.RegisterNodeFactory(constBoolDefinition, func(ctx any, parent core.NodeBaseInterface, parentId string, nodeDef map[string]any, validate bool) (core.NodeBaseInterface, []error) {
err = core.RegisterNodeFactory(constBoolDefinition, func(ctx any, parent core.NodeBaseInterface, parentId string, nodeDef map[string]any, validate bool, opts core.RunOpts) (core.NodeBaseInterface, []error) {
return &ConstNode[bool]{
portValue: ni.Core_const_bool_v1_Input_value,
}, nil
Expand Down
2 changes: 1 addition & 1 deletion nodes/credentials-accesskey@v1.go
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ func (n *AccessKeyCredentialsNode) OutputValueById(c *core.ExecutionState, outpu
}

func init() {
err := core.RegisterNodeFactory(accessKeyCredentialDefinition, func(ctx any, parent core.NodeBaseInterface, parentId string, nodeDef map[string]any, validate bool) (core.NodeBaseInterface, []error) {
err := core.RegisterNodeFactory(accessKeyCredentialDefinition, func(ctx any, parent core.NodeBaseInterface, parentId string, nodeDef map[string]any, validate bool, opts core.RunOpts) (core.NodeBaseInterface, []error) {
return &AccessKeyCredentialsNode{}, nil
})
if err != nil {
Expand Down
2 changes: 1 addition & 1 deletion nodes/credentials-ssh@v1.go
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ func (n *SshCredentialNode) OutputValueById(c *core.ExecutionState, outputId cor
}

func init() {
err := core.RegisterNodeFactory(sshCredentialDefinition, func(ctx any, parent core.NodeBaseInterface, parentId string, nodeDef map[string]any, validate bool) (core.NodeBaseInterface, []error) {
err := core.RegisterNodeFactory(sshCredentialDefinition, func(ctx any, parent core.NodeBaseInterface, parentId string, nodeDef map[string]any, validate bool, opts core.RunOpts) (core.NodeBaseInterface, []error) {
return &SshCredentialNode{}, nil
})
if err != nil {
Expand Down
2 changes: 1 addition & 1 deletion nodes/credentials-userpass@v1.go
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ func (n *UserPassCredentialsNode) OutputValueById(c *core.ExecutionState, output
}

func init() {
err := core.RegisterNodeFactory(userPassCredentialDefinition, func(ctx any, parent core.NodeBaseInterface, parentId string, nodeDef map[string]any, validate bool) (core.NodeBaseInterface, []error) {
err := core.RegisterNodeFactory(userPassCredentialDefinition, func(ctx any, parent core.NodeBaseInterface, parentId string, nodeDef map[string]any, validate bool, opts core.RunOpts) (core.NodeBaseInterface, []error) {
return &UserPassCredentialsNode{}, nil
})
if err != nil {
Expand Down
2 changes: 1 addition & 1 deletion nodes/dir-create@v1.go
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ func (n *DirCreateNode) ExecuteImpl(c *core.ExecutionState, inputId core.InputId
}

func init() {
err := core.RegisterNodeFactory(dirCreateDefinition, func(ctx any, parent core.NodeBaseInterface, parentId string, nodeDef map[string]any, validate bool) (core.NodeBaseInterface, []error) {
err := core.RegisterNodeFactory(dirCreateDefinition, func(ctx any, parent core.NodeBaseInterface, parentId string, nodeDef map[string]any, validate bool, opts core.RunOpts) (core.NodeBaseInterface, []error) {
return &DirCreateNode{}, nil
})
if err != nil {
Expand Down
2 changes: 1 addition & 1 deletion nodes/dir-walk@v1.go
Original file line number Diff line number Diff line change
Expand Up @@ -177,7 +177,7 @@ func walk(root string, opts walkOpts, pattern []string, items map[string]os.File
}

func init() {
err := core.RegisterNodeFactory(walkDefinition, func(ctx any, parent core.NodeBaseInterface, parentId string, nodeDef map[string]any, validate bool) (core.NodeBaseInterface, []error) {
err := core.RegisterNodeFactory(walkDefinition, func(ctx any, parent core.NodeBaseInterface, parentId string, nodeDef map[string]any, validate bool, opts core.RunOpts) (core.NodeBaseInterface, []error) {
return &WalkNode{}, nil
})
if err != nil {
Expand Down
Loading
Loading