Skip to content

Commit 8dee965

Browse files
authored
Kotlin nightlies: rebase on top of main (#6010)
1 parent 3b61312 commit 8dee965

File tree

2 files changed

+63
-36
lines changed

2 files changed

+63
-36
lines changed

.github/workflows/bump-kotlin-nightlies.yml

Lines changed: 4 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -10,20 +10,10 @@ jobs:
1010
runs-on: macos-14
1111
steps:
1212
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 #v4.1.7
13-
- name: Bump Kotlin version
13+
with:
14+
ref: kotlin-nightlies
15+
fetch-depth: 0
16+
- name: Rebase on top of main, bump versions, commit and push, and trigger 'pr' workflow
1417
run: ./scripts/bump-kotlin-nightlies.main.kts
15-
- name: Update API dump
16-
run: ./gradlew apiDump
17-
- name: Commit and push changes to kotlin-nightlies branch
18-
run: |
19-
git checkout -b kotlin-nightlies
20-
git add .
21-
git commit -m "Bump Kotlin version"
22-
git push --force origin kotlin-nightlies
23-
# Trigger a workflow manually because actions cannot trigger workflows to avoid endless loops
24-
# https://github.com/peter-evans/create-pull-request/blob/main/docs/concepts-guidelines.md#triggering-further-workflow-runs
25-
- name: Trigger pr workflow
26-
run: |
27-
gh workflow run pr --ref kotlin-nightlies
2818
env:
2919
GH_TOKEN: ${{ github.token }}

scripts/bump-kotlin-nightlies.main.kts

Lines changed: 59 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,13 @@ import java.io.File
44
import java.net.URL
55
import javax.xml.parsers.DocumentBuilderFactory
66

7-
fun main() {
8-
// Update versions in libraries.toml
9-
val kotlinVersion = getLatestVersion("https://maven.pkg.jetbrains.space/kotlin/p/kotlin/dev/org/jetbrains/kotlin/kotlin-stdlib/maven-metadata.xml", prefix = "2.0.20")
10-
val kspVersion = getLatestVersion("https://oss.sonatype.org/content/repositories/snapshots/com/google/devtools/ksp/com.google.devtools.ksp.gradle.plugin/maven-metadata.xml")
7+
val BRANCH_NAME = "kotlin-nightlies"
8+
9+
fun bumpVersions() {
10+
val kotlinVersion =
11+
getLatestVersion("https://maven.pkg.jetbrains.space/kotlin/p/kotlin/dev/org/jetbrains/kotlin/kotlin-stdlib/maven-metadata.xml", prefix = "2.0.20")
12+
val kspVersion =
13+
getLatestVersion("https://oss.sonatype.org/content/repositories/snapshots/com/google/devtools/ksp/com.google.devtools.ksp.gradle.plugin/maven-metadata.xml")
1114
File("gradle/libraries.toml").let { file ->
1215
file.writeText(
1316
file.readText()
@@ -17,24 +20,6 @@ fun main() {
1720
.replaceVersion("ksp", kspVersion)
1821
)
1922
}
20-
21-
// Uncomment Kotlin dev maven repository, add Sonatype snapshots repository
22-
setOf(
23-
File("gradle/repositories.gradle.kts"),
24-
File("intellij-plugin/build.gradle.kts"),
25-
)
26-
.forEach { file ->
27-
file.writeText(
28-
file.readText()
29-
.replace(
30-
"""// maven { url = uri("https://maven.pkg.jetbrains.space/kotlin/p/kotlin/dev/") }""",
31-
"""
32-
maven { url = uri("https://maven.pkg.jetbrains.space/kotlin/p/kotlin/dev/") }
33-
maven { url = uri("https://oss.sonatype.org/content/repositories/snapshots/") }
34-
""".trimIndent()
35-
)
36-
)
37-
}
3823
}
3924

4025
fun String.replaceVersion(key: String, version: String): String {
@@ -66,4 +51,56 @@ fun getLatestVersion(url: String, prefix: String? = null): String {
6651
}
6752
}
6853

54+
fun runCommand(vararg args: String): String {
55+
val builder = ProcessBuilder(*args)
56+
.redirectError(ProcessBuilder.Redirect.INHERIT)
57+
val process = builder.start()
58+
val output = process.inputStream.bufferedReader().readText().trim()
59+
val ret = process.waitFor()
60+
if (ret != 0) {
61+
throw Exception("command ${args.joinToString(" ")} failed:\n$output")
62+
}
63+
return output
64+
}
65+
66+
fun runCommand(args: String): String {
67+
return runCommand(*args.split(" ").toTypedArray())
68+
}
69+
70+
fun rebaseOnTopOfMain() {
71+
val firstCommitMessage = "Add Kotlin Dev and Maven Central Snapshots repositories"
72+
runCommand("git fetch origin main:main")
73+
val baseCommit = runCommand("git", "rev-parse", "HEAD^{/$firstCommitMessage}^")
74+
runCommand("git rebase --rebase-merges $baseCommit --onto main")
75+
}
76+
77+
fun triggerPrWorkflow() {
78+
runCommand("gh workflow run pr --ref $BRANCH_NAME")
79+
}
80+
81+
fun commitAndPush() {
82+
val status = runCommand("git status")
83+
if (status.contains("nothing to commit")) {
84+
println("No changes to commit")
85+
return
86+
}
87+
runCommand("git add .")
88+
runCommand("git", "commit", "-m", "Bump Kotlin version")
89+
runCommand("git push --force origin $BRANCH_NAME")
90+
}
91+
92+
fun main() {
93+
println("Rebase on top of main")
94+
rebaseOnTopOfMain()
95+
96+
println("Bump versions in libraries.toml")
97+
bumpVersions()
98+
99+
println("Commit and push")
100+
commitAndPush()
101+
102+
println("Trigger 'pr' workflow")
103+
triggerPrWorkflow()
104+
}
105+
69106
main()

0 commit comments

Comments
 (0)