Example #1
0
        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));
        }
Example #2
0
        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();
            }
        }
Example #3
0
        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);
            }
        }
Example #4
0
        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);
        }
Example #5
0
        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();
        }
Example #6
0
        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));
        }