Skip to content

Commit a4b7b18

Browse files
committed
Update libraries and improve code
1 parent ae7d880 commit a4b7b18

File tree

5 files changed

+43
-30
lines changed

5 files changed

+43
-30
lines changed

.github/workflows/main.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,13 @@ jobs:
1414
runs-on: ubuntu-latest
1515
steps:
1616
- name: Checkout the main branch
17-
uses: actions/checkout@v3
17+
uses: actions/checkout@v4
1818

1919
# Refer to https://stackoverflow.com/a/69116750 for running Kotlin scripts
2020
- name: Use a specific Kotlin version
2121
uses: fwilhe2/setup-kotlin@main
2222
with:
23-
version: 1.7.10
23+
version: 2.1.0
2424

2525
- name: Check if there is a new release
2626
id: check-for-updates
@@ -66,7 +66,7 @@ jobs:
6666

6767
# See https://github.community/t/how-to-commit-to-two-branches-from-an-action/17713
6868
- name: Checkout the website branch
69-
uses: actions/checkout@v3
69+
uses: actions/checkout@v4
7070
if: ${{ steps.check-for-updates.outputs.result == 'stale' }}
7171
with:
7272
ref: website

scripts/check-for-updates.main.kts

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,27 +5,29 @@
55
@file:Repository("https://repo.maven.apache.org/maven2")
66
@file:Repository("https://jcenter.bintray.com")
77
@file:Repository("https://jitpack.io")
8-
@file:DependsOn("com.rometools:rome:1.16.0")
8+
@file:DependsOn("com.rometools:rome:2.1.0")
99

1010
// NOTE: See https://youtrack.jetbrains.com/issue/KT-42101
11+
// NOTE that currently, IntelliJ code features break when importing external scripts.
1112
@file:Import("retry.main.kts")
1213

1314
import com.rometools.rome.io.SyndFeedInput
1415
import com.rometools.rome.io.XmlReader
15-
import java.io.File
16-
import java.net.URL
16+
import java.net.URI
1717
import java.time.LocalDateTime
1818
import java.time.format.DateTimeFormatter
19-
import java.time.format.DateTimeFormatter.ISO_LOCAL_TIME
19+
import kotlin.io.path.Path
20+
import kotlin.io.path.appendText
21+
import kotlin.io.path.readText
2022

2123
val datesPattern = DateTimeFormatter.ofPattern("EEE LLL dd HH:mm:ss z yyyy")
22-
val feedUrl = URL("https://developer.android.com/feeds/androidx-release-notes.xml")
24+
val feedUrl = URI("https://developer.android.com/feeds/androidx-release-notes.xml").toURL()
2325
val reader = tryTo("initialize the feed reader") { XmlReader(feedUrl) }
24-
val file = File("last-rss-update.txt")
26+
val file = Path("last-rss-update.txt")
2527
val feed = SyndFeedInput().build(reader)
26-
val ours = file.readText().trimEnd().parse()
28+
val ours = file.readText().trimEnd().parseAsLocalDateTime()
2729
val ourDate = ours.toLocalDate().toString()
28-
val theirs = feed.publishedDate.toString().parse()
30+
val theirs = feed.publishedDate.toString().parseAsLocalDateTime()
2931
val theirDate = theirs.toLocalDate().toString()
3032
val theirTime = theirs.toLocalTime().format(DateTimeFormatter.ofPattern("hha"))
3133
val areTheSame = ours == theirs
@@ -43,10 +45,11 @@ println("Their RSS publish date: $theirs")
4345
// To set output for a job step
4446
// see https://docs.github.com/en/actions/learn-github-actions/workflow-commands-for-github-actions#setting-an-output-parameter
4547
// and https://stackoverflow.com/a/59201610
46-
val stepsOutputFile = File(System.getenv("GITHUB_OUTPUT"))
48+
val stepsOutputFile = Path(System.getenv("GITHUB_OUTPUT"))
4749
val lineFeed: String = System.lineSeparator()
4850
stepsOutputFile.appendText("result=$freshness$lineFeed")
4951
stepsOutputFile.appendText("dateTag=$dateTag$lineFeed")
5052

51-
fun String.parse() = runCatching { LocalDateTime.parse(this, datesPattern) }
53+
fun String.parseAsLocalDateTime() =
54+
runCatching { LocalDateTime.parse(this, datesPattern) }
5255
.getOrDefault(LocalDateTime.of(1, 1, 1, 1, 1))

scripts/create-new-release-notes.main.kts

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,25 +5,27 @@
55
@file:Repository("https://repo.maven.apache.org/maven2")
66
@file:Repository("https://jcenter.bintray.com")
77
@file:Repository("https://jitpack.io")
8-
@file:DependsOn("com.rometools:rome:1.16.0")
9-
@file:DependsOn("org.jsoup:jsoup:1.15.1")
8+
@file:DependsOn("com.rometools:rome:2.1.0")
9+
@file:DependsOn("org.jsoup:jsoup:1.18.3")
1010

1111
import com.rometools.rome.io.SyndFeedInput
1212
import com.rometools.rome.io.XmlReader
1313
import org.jsoup.Jsoup
1414
import org.jsoup.nodes.Document
1515
import org.jsoup.nodes.Element
16-
import java.io.File
17-
import java.net.URL
16+
import java.net.URI
17+
import kotlin.io.path.Path
18+
import kotlin.io.path.bufferedWriter
19+
import kotlin.io.path.writeText
1820
import kotlin.time.Duration.Companion.seconds
1921

20-
val resultFile = File("release-notes.html")
22+
val resultFile = Path("release-notes.html")
2123
val waitTime = 10.seconds
22-
val feedUrl = URL("https://developer.android.com/feeds/androidx-release-notes.xml")
24+
val feedUrl = URI("https://developer.android.com/feeds/androidx-release-notes.xml").toURL()
2325
val writer = resultFile.bufferedWriter()
2426
val reader = tryTo("initialize the feed reader") {
2527
// NOTE: Use this to test for a complicated release notes
26-
// XmlReader(File("test-feed-result.xml"))
28+
// XmlReader(File("test-feed-result.xml"))
2729
XmlReader(feedUrl)
2830
}
2931
val feed = SyndFeedInput().build(reader)
@@ -47,7 +49,7 @@ Jsoup
4749

4850
// Creates a raw text version as well in case someone needs it
4951
val text = Jsoup.parse(resultFile).wholeText()
50-
File("release-notes.txt").writeText(text)
52+
Path("release-notes.txt").writeText(text)
5153

5254
// TODO: Duplicate; use the retry.main.kts script.
5355
// See other scripts for example usage.
@@ -125,12 +127,20 @@ fun Document.extractChangelog(id: String) = this
125127
.takeWhile { it.`is`(":not(h3)") }
126128
.joinToString("\n")
127129

130+
131+
132+
/* -------------------------------------------------------------------------- */
133+
/* -------------------------------------------------------------------------- */
128134
/* -------------------------------------------------------------------------- */
135+
/* -------------------------------------------------------------------------- */
136+
/* -------------------------------------------------------------------------- */
137+
138+
129139

130140
// This is a coroutine version of the code.
131-
// Needs `org.jetbrains.kotlinx:kotlinx-coroutines-core`
141+
// Needs @file:DependsOn("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.1")
132142
// which seems to not work in Kotlin scripts.
133-
// Probably fixed in Kotlin 1.7
143+
// Probably fixed in Kotlin 1.7 or newer
134144
/*
135145
fun main() = runBlocking {
136146
val init = async(Dispatchers.IO) {

scripts/retry.main.kts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,6 @@
22

33
@file:JvmName("Retry")
44
@file:CompilerOptions("-jvm-target", "11")
5-
@file:CompilerOptions("-Xopt-in", "kotlin.RequiresOptIn")
6-
@file:OptIn(kotlin.time.ExperimentalTime::class)
75

86
import kotlin.time.Duration.Companion.seconds
97

scripts/set-rss-last-update.main.kts

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,19 +5,21 @@
55
@file:Repository("https://repo.maven.apache.org/maven2")
66
@file:Repository("https://jcenter.bintray.com")
77
@file:Repository("https://jitpack.io")
8-
@file:DependsOn("com.rometools:rome:1.16.0")
8+
@file:DependsOn("com.rometools:rome:2.1.0")
99

1010
// NOTE: See https://youtrack.jetbrains.com/issue/KT-42101
11+
// NOTE that currently, IntelliJ code features break when importing external scripts.
1112
@file:Import("retry.main.kts")
1213

1314
import com.rometools.rome.io.SyndFeedInput
1415
import com.rometools.rome.io.XmlReader
15-
import java.io.File
16-
import java.net.URL
16+
import java.net.URI
17+
import kotlin.io.path.Path
18+
import kotlin.io.path.writeText
1719

18-
val feedUrl = URL("https://developer.android.com/feeds/androidx-release-notes.xml")
20+
val feedUrl = URI("https://developer.android.com/feeds/androidx-release-notes.xml").toURL()
1921
val reader = tryTo("initialize the feed reader") { XmlReader(feedUrl) }
2022
val feed = SyndFeedInput().build(reader)
2123
val date = feed.publishedDate.toString()
22-
File("last-rss-update.txt").writeText("$date\n")
24+
Path("last-rss-update.txt").writeText("$date\n")
2325
reader.close()

0 commit comments

Comments
 (0)