Skip to content

Commit cde5d9b

Browse files
Updated decomposer with condition logic
1 parent 64bd0b7 commit cde5d9b

File tree

1 file changed

+11
-0
lines changed

1 file changed

+11
-0
lines changed

internal/decomposer/decomposer.go

+11
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import (
77

88
"soarca/internal/executors"
99
"soarca/internal/executors/action"
10+
"soarca/internal/executors/condition"
1011
"soarca/internal/guid"
1112
"soarca/internal/reporter"
1213
"soarca/logger"
@@ -52,6 +53,7 @@ type Decomposer struct {
5253
details ExecutionDetails
5354
actionExecutor action.IExecuter
5455
playbookActionExecutor executors.IPlaybookExecuter
56+
conditionExecutor condition.IExecuter
5557
guid guid.IGuid
5658
reporter reporter.IWorkflowReporter
5759
}
@@ -155,6 +157,15 @@ func (decomposer *Decomposer) ExecuteStep(step cacao.Step, scopeVariables cacao.
155157
return decomposer.actionExecutor.Execute(metadata, actionMetadata)
156158
case cacao.StepTypePlaybookAction:
157159
return decomposer.playbookActionExecutor.Execute(metadata, step, variables)
160+
case cacao.StepTypeIfCondition:
161+
stepId, branch, err := decomposer.conditionExecutor.Execute(metadata, step)
162+
if err != nil {
163+
return cacao.NewVariables(), err
164+
}
165+
if branch {
166+
return decomposer.ExecuteBranch(stepId, variables)
167+
}
168+
return variables, nil
158169
default:
159170
// NOTE: This currently silently handles unknown step types. Should we return an error instead?
160171
return cacao.NewVariables(), nil

0 commit comments

Comments
 (0)