public StepResult(bool successful, string warning, string log, ActionRunResult subAction = null, string[] errorListOutput = null) { Successful = successful; Warning = warning; Log = log; SubAction = subAction; ErrorListOutput = errorListOutput; }
public async Task <ActionRunResult> RunAsync(string actionName, IReadOnlyList <IActionStep> steps, bool continueOnError = true) { var runStats = new ActionRunResult(actionName, steps, continueOnError); await FillInitialTimestampsAsync(steps); runStats.RecordInitTimestampFetch(); for (int i = 0; i < steps.Count; ++i) { _controller.CancellationToken.ThrowIfCancellationRequested(); StepResult result; switch (steps[i]) { case CopyFileStep copyFile: result = await DoCopyFileAsync(copyFile); break; case ExecuteStep execute: result = await DoExecuteAsync(execute); break; case ReadDebugDataStep readDebugData: (result, runStats.BreakState) = await DoReadDebugDataAsync(readDebugData); break; case OpenInEditorStep openInEditor: await _controller.OpenFileInVsEditorAsync(openInEditor.Path, openInEditor.LineMarker); result = new StepResult(true, "", ""); break; case RunActionStep runAction: var subActionResult = await RunAsync(runAction.Name, runAction.EvaluatedSteps, continueOnError); result = new StepResult(subActionResult.Successful, "", "", subActionResult); break; default: throw new NotImplementedException(); } runStats.RecordStep(i, result); if (!result.Successful && !continueOnError) { break; } } runStats.FinishRun(); return(runStats); }