Skip to content

Commit 67eb636

Browse files
Merge pull request #11 from manishdait/issue-1
Added config for excluding specific issues
2 parents b8c426f + d280145 commit 67eb636

File tree

3 files changed

+15
-9
lines changed

3 files changed

+15
-9
lines changed

src/main/java/com/openelements/issues/config/RepositoryProperty.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
package com.openelements.issues.config;
22

3+
import java.util.List;
34
import java.util.Objects;
45
import org.jspecify.annotations.NonNull;
6+
import org.jspecify.annotations.Nullable;
57

6-
public record RepositoryProperty(@NonNull String org, @NonNull String repo) {
8+
public record RepositoryProperty(@NonNull String org, @NonNull String repo, @Nullable List<String> excludeIdentifiers) {
79

810
public RepositoryProperty {
911
Objects.requireNonNull(org, "org must not be null");

src/main/java/com/openelements/issues/services/GitHubCache.java

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import java.util.concurrent.TimeUnit;
2121
import java.util.stream.Collectors;
2222
import org.jspecify.annotations.NonNull;
23+
import org.jspecify.annotations.Nullable;
2324
import org.slf4j.Logger;
2425
import org.springframework.stereotype.Service;
2526

@@ -47,10 +48,10 @@ public GitHubCache(@NonNull final IssueServiceProperties properties, final GitHu
4748
log.info("Updating cache");
4849
final List<RepositoryProperty> repos = properties.getRepositories();
4950
repos.forEach(repo -> updateContributors(repo.org(), repo.repo()));
50-
repos.forEach(repo -> updateIssues(repo.org(), repo.repo(), GOOD_FIRST_ISSUE_LABEL));
51-
repos.forEach(repo -> updateIssues(repo.org(), repo.repo(), GOOD_FIRST_ISSUE_CANDIDATE_LABEL));
52-
repos.forEach(repo -> updateIssues(repo.org(), repo.repo(), HACKTOBERFEST_LABEL));
53-
repos.forEach(repo -> updateIssues(repo.org(), repo.repo(), HELP_WANTED_LABEL));
51+
repos.forEach(repo -> updateIssues(repo.org(), repo.repo(), repo.excludeIdentifiers(), GOOD_FIRST_ISSUE_LABEL));
52+
repos.forEach(repo -> updateIssues(repo.org(), repo.repo(), repo.excludeIdentifiers(), GOOD_FIRST_ISSUE_CANDIDATE_LABEL));
53+
repos.forEach(repo -> updateIssues(repo.org(), repo.repo(),repo.excludeIdentifiers(), HACKTOBERFEST_LABEL));
54+
repos.forEach(repo -> updateIssues(repo.org(), repo.repo(), repo.excludeIdentifiers(), HELP_WANTED_LABEL));
5455
log.info("Cache updated. Found {} contributors and {} issues", getContributors().size(), getAllIssues().size());
5556
} catch (final Exception e) {
5657
log.error("Failed to update cache", e);
@@ -70,11 +71,11 @@ private void updateContributors(@NonNull final String org, @NonNull final String
7071
}
7172
}
7273

73-
private void updateIssues(@NonNull final String org, @NonNull final String repo, @NonNull final String label) {
74+
private void updateIssues(@NonNull final String org, @NonNull final String repo, @Nullable List<String> excludedIdentifiers, @NonNull final String label) {
7475
try {
7576
log.info("Updating issues cache for repo '{}/{}' with label '{}'", org, repo, label);
7677
final Repository repository = gitHubClient.getRepository(org, repo);
77-
final List<Issue> issues = gitHubClient.getIssues(repository, label);
78+
final List<Issue> issues = gitHubClient.getIssues(repository, label, excludedIdentifiers);
7879
log.info("Found {} issues for repo '{}/{}' with label '{}'", issues.size(), org, repo, label);
7980
this.issuesCache.put(hash(org, repo, label), issues);
8081
} catch (final Exception e) {

src/main/java/com/openelements/issues/services/GitHubClient.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import java.util.List;
1111
import java.util.Objects;
1212
import org.jspecify.annotations.NonNull;
13+
import org.jspecify.annotations.Nullable;
1314
import org.slf4j.Logger;
1415
import org.slf4j.LoggerFactory;
1516
import org.springframework.http.ResponseEntity;
@@ -95,7 +96,7 @@ public Repository getRepository(@NonNull final String org, @NonNull final String
9596
return new Repository(org, repo, imageUrl, languageTags);
9697
}
9798

98-
public List<Issue> getIssues(@NonNull final Repository repository, @NonNull final String label) {
99+
public List<Issue> getIssues(@NonNull final Repository repository, @NonNull final String label, @Nullable List<String> excludedIdentifiers) {
99100
Objects.requireNonNull(repository, "repository must not be null");
100101
Objects.requireNonNull(label, "label must not be null");
101102
final List<Issue> issues = new ArrayList<>();
@@ -161,7 +162,9 @@ public List<Issue> getIssues(@NonNull final Repository repository, @NonNull fina
161162

162163

163164
final Issue issue = new Issue(title, Integer.valueOf(number).toString(), repository, url, isAssigned, isClosed, labels);
164-
issues.add(issue);
165+
if (excludedIdentifiers == null || !excludedIdentifiers.contains(issue.identifier())) {
166+
issues.add(issue);
167+
}
165168
});
166169
return Collections.unmodifiableList(issues);
167170
}

0 commit comments

Comments
 (0)