in src/Microsoft.Atlas.CommandLine/Execution/WorkflowEngine.cs [72:107]
private async Task ExecuteOperation(OperationContext context)
{
var operation = context.Operation;
if (context.Operation.@foreach == null)
{
await ExecuteOperationInner(context);
}
else
{
var foreachContexts = new List<OperationContext>();
var foreachValuesInList = _valuesEngine.ProcessValuesForeachIn(operation.@foreach.values, context.Values);
foreach (var foreachValuesIn in foreachValuesInList)
{
var foreachContext = context.CreateChildContext(operation, MergeUtils.Merge(foreachValuesIn, context.Values));
foreachContexts.Add(foreachContext);
await ExecuteOperationInner(foreachContext);
}
var valuesOut = default(object);
if (operation.@foreach.output != null)
{
valuesOut = _valuesEngine.ProcessValuesForeachOut(operation.@foreach.output, foreachContexts.Select(foreachContext => foreachContext.Values).ToList());
}
else
{
foreach (var foreachValuesOut in foreachContexts.Select(foreachContext => foreachContext.ValuesOut))
{
valuesOut = MergeUtils.Merge(foreachValuesOut, valuesOut);
}
}
context.AddValuesOut(valuesOut);
}
}