List<ExecutableTask> GenerateTasks(SourceDrop sourceDrop) { var execTasks = new List<ExecutableTask>(); bool shouldStop; foreach (var task in tasksSource.Detect(sourceDrop.SourceDropLocation, out shouldStop)) { execTasks.AddRange(task.GimeTasks(execTaskGenerator)); } return execTasks; }
void RunTasks(SourceDrop sourceDrop, List<ExecutableTask> execTasks) { var execTaskStatus = ExecTaskResult.Status.Success; var status = GeneratePipelineStatus(execTasks); OnBuildStarted(status); for (var i = 0; i < execTasks.Count; i++) { var execTask = execTasks[i]; var terminalId = status.Tasks[i].TerminalId; OnBuildUpdated(i, terminalId, TaskInfo.TaskStatus.Started); var sequneceIndex = 0; Action<string> execTaskOnOnTerminalOutputUpdate = s => OnTerminalUpdate(new TerminalUpdateInfo(sequneceIndex++, s, i, terminalId)); execTask.OnTerminalOutputUpdate += execTaskOnOnTerminalOutputUpdate; try { execTaskStatus = execTask.Perform(sourceDrop).ExecStatus; } catch (Exception e) { execTaskStatus = ExecTaskResult.Status.Error; execTaskOnOnTerminalOutputUpdate("Runz>> Exception running the task:" + e); } execTask.OnTerminalOutputUpdate -= execTaskOnOnTerminalOutputUpdate; var taskStatus = execTaskStatus == ExecTaskResult.Status.Error ? TaskInfo.TaskStatus.FinishedError : TaskInfo.TaskStatus.FinishedSuccess; OnBuildUpdated(i, terminalId, taskStatus); if (execTaskStatus != ExecTaskResult.Status.Success) break; } OnBuildEnded(execTaskStatus == ExecTaskResult.Status.Error ? BuildTotalEndStatus.Error : BuildTotalEndStatus.Success); }
public virtual void Process(SourceDrop sourceDrop) { var execTasks = GenerateTasks(sourceDrop); RunTasks(sourceDrop, execTasks); }