Esempio n. 1
0
 public StepResult(bool successful, string warning, string log, ActionRunResult subAction = null, string[] errorListOutput = null)
 {
     Successful      = successful;
     Warning         = warning;
     Log             = log;
     SubAction       = subAction;
     ErrorListOutput = errorListOutput;
 }
Esempio n. 2
0
        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);
        }