Add support for monitoring multiple repositories

This commit is contained in:
Andy Wilkinson
2018-09-06 16:19:19 +01:00
parent f0e89f901e
commit 54cf663e43
12 changed files with 331 additions and 165 deletions

View File

@@ -17,8 +17,16 @@
package io.spring.issuebot.triage;
import java.util.Arrays;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;
import io.spring.issuebot.GitHubProperties;
import io.spring.issuebot.IssueListener;
import io.spring.issuebot.MonitoringProperties;
import io.spring.issuebot.MonitoringProperties.Repository;
import io.spring.issuebot.MultiRepositoryIssueListener;
import io.spring.issuebot.RoutingMultiRepositoryIssueListener;
import io.spring.issuebot.github.GitHubOperations;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
@@ -35,12 +43,23 @@ import org.springframework.context.annotation.Configuration;
class TriageConfiguration {
@Bean
TriageIssueListener triageIssueListener(GitHubOperations gitHubOperations,
TriageProperties triageProperties, GitHubProperties gitHubProperties) {
MultiRepositoryIssueListener triageIssueListener(GitHubOperations gitHubOperations,
TriageProperties triageProperties, MonitoringProperties monitoringProperties,
GitHubProperties gitHubProperties) {
Map<Repository, IssueListener> delegates = monitoringProperties.getRepositories()
.stream()
.collect(Collectors.toMap(Function.identity(),
(repository) -> createListener(repository, gitHubOperations,
triageProperties)));
return new RoutingMultiRepositoryIssueListener(delegates);
}
private TriageIssueListener createListener(Repository repository,
GitHubOperations gitHubOperations, TriageProperties triageProperties) {
return new TriageIssueListener(
Arrays.asList(
new OpenedByCollaboratorTriageFilter(
gitHubProperties.getRepository().getCollaborators()),
repository.getCollaborators()),
new LabelledTriageFilter(), new MilestoneAppliedTriageFilter()),
new LabelApplyingTriageListener(gitHubOperations,
triageProperties.getLabel()));