diff --git a/.github/scripts/libraries_releases.main.kts b/.github/scripts/libraries_releases.main.kts new file mode 100755 index 000000000..ad4acda84 --- /dev/null +++ b/.github/scripts/libraries_releases.main.kts @@ -0,0 +1,64 @@ +#!/usr/bin/env kotlin + +/** + * This script is used to update the versions of libraries stored in the v-releases.list releases file. + */ + +import java.io.File +import java.net.HttpURLConnection +import java.net.URL + +val FILE_PATH = "v-releases.list" +val UNKNOWN = "unknown" + +val releasesList = mapOf( + "gradle-intellij-plugin-version" to ReleaseInfo( + type = ReleaseType.GitHub, + url = "https://github.com/JetBrains/gradle-intellij-plugin/releases/latest", + ), + "gradle-grammar-kit-plugin-version" to ReleaseInfo( + type = ReleaseType.GitHub, + url = "https://github.com/JetBrains/gradle-grammar-kit-plugin/releases/latest", + ), +) + +val vars = releasesList.mapValues { (key, releaseInfo) -> + when (releaseInfo.type) { + ReleaseType.GitHub -> run { + try { + URL(releaseInfo.url).openConnection().run { + (this as HttpURLConnection).instanceFollowRedirects = false + getHeaderField("Location").split('/').last().removePrefix("v") + } + } catch (e: Exception) { + println("Cannot resolve the latest $key version") + UNKNOWN + } + } + } +}.map { (key, version) -> + "" +} + +""" + + + + + ${vars.joinToString("\n ")} + +""".trimStart().let(file(FILE_PATH)::writeText) + + + +fun file(path: String) = File(System.getenv("GITHUB_WORKSPACE") ?: "../../").resolve(path).also(File::createNewFile) + +enum class ReleaseType { + GitHub +} + +data class ReleaseInfo( + val type: ReleaseType, + val url: String, +) diff --git a/.github/workflows/generate-libraries-releases.yml b/.github/workflows/generate-libraries-releases.yml new file mode 100644 index 000000000..69674aaa9 --- /dev/null +++ b/.github/workflows/generate-libraries-releases.yml @@ -0,0 +1,19 @@ +name: Generate Libraries releases variable file + +on: + schedule: + - cron: "1 1 * * *" + workflow_dispatch: + +jobs: + generate: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: Generate + run: "${GITHUB_WORKSPACE}/.github/scripts/libraries_releases.main.kts" + - name: Commit changes + uses: Endbug/add-and-commit@v9 + with: + message: 'Generate Libraries releases variable file' + add: 'v-releases.list' diff --git a/project.ihp b/project.ihp index c4b55b000..fd5553690 100644 --- a/project.ihp +++ b/project.ihp @@ -11,6 +11,7 @@ + diff --git a/v-releases.list b/v-releases.list new file mode 100644 index 000000000..9ee28d4cb --- /dev/null +++ b/v-releases.list @@ -0,0 +1,8 @@ + + + + + + + diff --git a/v.list b/v.list index e27b09e2f..a8dbaab10 100644 --- a/v.list +++ b/v.list @@ -16,8 +16,4 @@ - - - -