Skip to content

Commit 28809c4

Browse files
authored
Improve Library Versions Dependabot (#565)
* Group unsupported libraries * Use def instead of actual types
1 parent 6d740fe commit 28809c4

File tree

3 files changed

+79
-0
lines changed

3 files changed

+79
-0
lines changed

.github/workflows/check-new-library-versions.yml

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,10 +135,25 @@ jobs:
135135
steps:
136136
- name: "☁️ Checkout repository"
137137
uses: actions/checkout@v4
138+
- name: "🔧 Setup java"
139+
uses: actions/setup-java@v4
140+
with:
141+
distribution: 'oracle'
142+
java-version: '21'
138143
- name: "✏️ PR for supported versions"
139144
run: |
140145
git config --local user.email "[email protected]"
141146
git config --local user.name "Github Actions"
142147
git fetch origin check-new-library-versions/$(date '+%Y-%m-%d')
143148
git checkout check-new-library-versions/$(date '+%Y-%m-%d')
144149
gh pr create --title "Update supported library versions" --body "This pull request updates supported versions of the existing libraries in the repo"
150+
- name: "✏️ Edit issue for unsupported versions"
151+
run: |
152+
git config --local user.email "[email protected]"
153+
git config --local user.name "Github Actions"
154+
ALL_COMMENTS=$(gh issue view "${{ needs.get-all-libraries.outputs.issue }}" --comments)
155+
156+
FORMATTED_BODY=$(./gradlew -q extractLibrariesGroupsFromGithubComments --comments="$ALL_COMMENTS")
157+
gh issue create --title "List unsupported libraries versions" --body "$FORMATTED_BODY"
158+
159+
gh issue close "${{ needs.get-all-libraries.outputs.issue }}"

tests/tck-build-logic/src/main/groovy/org.graalvm.internal.tck-harness.gradle

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import org.graalvm.internal.tck.GrypeTask
1717
import org.graalvm.internal.tck.TestedVersionUpdaterTask
1818
import org.graalvm.internal.tck.harness.tasks.CheckstyleInvocationTask
1919
import org.graalvm.internal.tck.harness.tasks.FetchExistingLibrariesWithNewerVersionsTask
20+
import org.graalvm.internal.tck.harness.tasks.GroupUnsupportedLibraries
2021
import org.graalvm.internal.tck.harness.tasks.TestInvocationTask
2122

2223

@@ -170,6 +171,11 @@ tasks.register("fetchExistingLibrariesWithNewerVersions", FetchExistingLibraries
170171
task.setAllLibraryCoordinates(matchingCoordinates)
171172
}
172173

174+
tasks.register("extractLibrariesGroupsFromGithubComments", GroupUnsupportedLibraries.class) { task ->
175+
task.setGroup(METADATA_GROUP)
176+
task.setDescription("Extracts groups of libraries from github comments provided in a form of string.")
177+
}
178+
173179
// java tasks
174180
tasks.register("checkAllowedDockerImages", GrypeTask.class) { task ->
175181
task.setDescription("Returns list of allowed docker images")
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
package org.graalvm.internal.tck.harness.tasks
2+
3+
import org.gradle.api.DefaultTask
4+
import org.gradle.api.provider.Property
5+
import org.gradle.api.tasks.Input
6+
import org.gradle.api.tasks.TaskAction
7+
import org.gradle.api.tasks.options.Option
8+
import org.gradle.util.internal.VersionNumber
9+
10+
import java.util.regex.Matcher
11+
import java.util.regex.Pattern
12+
13+
abstract class GroupUnsupportedLibraries extends DefaultTask {
14+
15+
@Input
16+
@Option(option = "comments", description = "Provides github comments for library grouping as string.")
17+
abstract Property<String> getGithubComments()
18+
19+
@TaskAction
20+
void action() {
21+
def pattern = Pattern.compile("--[\n ](.*?)[\n ]--")
22+
def matcher = pattern.matcher(getGithubComments().get())
23+
24+
def libraryGroups = new HashMap<String, List<String>>()
25+
while (matcher.find()) {
26+
def coordinates = matcher.group(1)
27+
def coordinatesPart = coordinates.split(":")
28+
def artifactKey = coordinatesPart[0] + ":" + coordinatesPart[1]
29+
def version = coordinatesPart[2]
30+
31+
if (libraryGroups.get(artifactKey) == null) {
32+
libraryGroups.put(artifactKey, new ArrayList<String>())
33+
}
34+
35+
libraryGroups.get(artifactKey).add(version)
36+
libraryGroups.get(artifactKey).sort(Comparator.comparing(VersionNumber::parse))
37+
}
38+
39+
print generateGroupedComment(libraryGroups)
40+
}
41+
42+
private static String generateGroupedComment(Map<String, List<String>> groups) {
43+
def sb = new StringBuilder("List of all unsupported libraries:\n")
44+
45+
for (String library : groups.keySet()) {
46+
sb.append("- ").append(library).append(":\n")
47+
48+
for (String version : groups.get(library)) {
49+
sb.append("\t").append("- ").append(version).append("\n")
50+
}
51+
52+
sb.append("\n")
53+
}
54+
55+
return sb.toString()
56+
}
57+
58+
}

0 commit comments

Comments
 (0)