protected override async Task <BuildResult> OnBuild( ProgressMonitor monitor, ConfigurationSelector configuration, OperationContext operationContext) { if (!TaskRunnerServices.AutomaticallyRunTasks) { return(await base.OnBuild(monitor, configuration, operationContext)); } GroupedTaskRunnerInformation tasks = TaskRunnerServices.Workspace.GetGroupedTask(Project); if (tasks == null) { return(await base.OnBuild(monitor, configuration, operationContext)); } BuildResult preBuildTasksResult = await TaskRunnerServices.Workspace.RunBuildTasks(tasks, TaskRunnerBindEvent.BeforeBuild); BuildResult result = await base.OnBuild(monitor, configuration, operationContext); BuildResult postBuildTasksResult = await TaskRunnerServices.Workspace.RunBuildTasks(tasks, TaskRunnerBindEvent.AfterBuild); return(Project.CombineBuildResults(preBuildTasksResult, result, postBuildTasksResult)); }
async Task RunProjectOpenTasks(Solution solution) { ProgressMonitor monitor = null; try { GroupedTaskRunnerInformation tasks = GetGroupedTask(solution); if (tasks != null) { monitor = CreateProgressMonitor(); await RunBuildTasks(tasks, TaskRunnerBindEvent.ProjectOpened); } foreach (Project project in solution.GetAllProjects()) { tasks = GetGroupedTask(project); if (tasks != null) { if (monitor == null) { monitor = CreateProgressMonitor(); } await RunBuildTasks(tasks, TaskRunnerBindEvent.ProjectOpened); } } } finally { monitor?.Dispose(); } }
async Task FindTaskInternal() { var filesAdded = new HashSet <FilePath> (); foreach (var project in solution.GetAllProjects()) { var foundProjectTasks = await FindTasks(project, filesAdded); if (foundProjectTasks != null) { var info = new GroupedTaskRunnerInformation(project, foundProjectTasks); groupedTasks.Add(info); } } groupedTasks.Sort(GroupedTaskRunnerInformationComparer.Instance); var foundTasks = await FindTasks(solution, filesAdded); if (foundTasks != null) { var info = new GroupedTaskRunnerInformation(solution, foundTasks); groupedTasks.Insert(0, info); } }
public async Task <BuildResult> RunBuildTasks(GroupedTaskRunnerInformation tasks, TaskRunnerBindEvent bindEvent) { var buildResult = new BuildResult(); foreach (TaskRunnerWithOptions node in tasks.GetTasks(bindEvent)) { ITaskRunnerCommandResult result = await TaskRunnerServices.Workspace.RunTask(node); if (result.ExitCode != 0) { buildResult.AddWarning(node.TaskRunner, result); } } return(buildResult); }
async Task AddTaskRunner(ITaskRunner runner, FilePath configFile, Project project) { ITaskRunnerConfig config = await runner.ParseConfig(null, configFile); var info = new TaskRunnerInformation(project, config, runner.Options, configFile); var groupedTask = GetGroupedTask(project); if (groupedTask == null) { groupedTask = new GroupedTaskRunnerInformation(project); groupedTasks = groupedTasks.Add(groupedTask); } groupedTask.AddTask(info); OnTasksChanged(); }
protected async override Task <BuildResult> Clean( ProgressMonitor monitor, ConfigurationSelector configuration, OperationContext operationContext) { if (!TaskRunnerServices.AutomaticallyRunTasks) { return(await base.Clean(monitor, configuration, operationContext)); } GroupedTaskRunnerInformation tasks = TaskRunnerServices.Workspace.GetGroupedTask(Solution); if (tasks == null) { return(await base.Clean(monitor, configuration, operationContext)); } BuildResult result = await base.Clean(monitor, configuration, operationContext); BuildResult cleanTasksResult = await TaskRunnerServices.Workspace.RunBuildTasks(tasks, TaskRunnerBindEvent.Clean); return(Solution.CombineBuildResults(result, cleanTasksResult)); }