diff --git a/.github/scripts/android_studio_releases.main.kts b/.github/scripts/android_studio_releases.main.kts
index ee2ee6004..82ee819a2 100755
--- a/.github/scripts/android_studio_releases.main.kts
+++ b/.github/scripts/android_studio_releases.main.kts
@@ -27,6 +27,13 @@ val RELEASES_FILE_PATH_MD = "topics/_generated/android_studio_releases.md"
val RELEASES_FILE_PATH_XML = "topics/_generated/android_studio_releases.xml"
val INTELLIJ_RELEASES = "https://www.jetbrains.com/intellij-repository/releases/"
val ANDROID_STUDIO_HOST = "https://developer.android.com"
+val CHANNEL_BADGES_LIST = """
+ [release]: https://img.shields.io/badge/-release-blue?style=flat-square
+ [patch]: https://img.shields.io/badge/-patch-orange?style=flat-square
+ [rc]: https://img.shields.io/badge/-rc-red?style=flat-square
+ [beta]: https://img.shields.io/badge/-beta-darkred?style=flat-square
+ [canary]: https://img.shields.io/badge/-canary-lightgrey?style=flat-square
+"""
val platformBuildToVersionMapping = INTELLIJ_RELEASES.fetch { content ->
Jsoup.parse(content, "").select("h2:contains(com.jetbrains.intellij.idea) + table tbody tr").mapNotNull { tr ->
@@ -80,74 +87,39 @@ frameUrl.fetch { content ->
}.also {
Persister().write(it, contentFile)
}.also { (_, items) ->
- ("" +
- """
-
+ ("""
+
+ """ + items.groupBy { SemVer.parse(it.version).major }.entries.joinToString("\n\n") {
+ """
+ ## ${it.key}.x
+ ${it.value.renderTable()}
+ """
+ } + """
+ $CHANNEL_BADGES_LIST
+
- """.trimIndent() +
-
- items.groupBy {
- SemVer.parse(it.version).major
- }.entries.joinToString("\n\n") { entry ->
- """
- ## ${entry.key}.x
-
- | Release Name | Channel | Release Date | Version | IntelliJ IDEA Version |
- |--------------|:-------:|--------------|---------|-----------------------|
-
- """.trimIndent() + entry.value.sortedByDescending {
- SemVer.parse(it.version)
- }.joinToString("\n") {
- val name = it.name.removePrefix("Android Studio").trim()
- val channel = it.channel.lowercase().run { "![$this][$this]" }
- val date = it.date
- val version = "${it.version} (${it.build})"
- val platform = "${it.platformVersion} (${it.platformBuild})"
-
- "| $name | $channel | $date | $version | $platform |"
- }
- } +
-
- """
-
-
- [release]: https://img.shields.io/badge/-release-blue?style=flat-square
- [patch]: https://img.shields.io/badge/-patch-orange?style=flat-square
- [rc]: https://img.shields.io/badge/-rc-red?style=flat-square
- [beta]: https://img.shields.io/badge/-beta-darkred?style=flat-square
- [canary]: https://img.shields.io/badge/-canary-lightgrey?style=flat-square
-
-
-
-
-
-
- | Release Name | Release Date | IntelliJ IDEA Version |
- |--------------|--------------|-----------------------|
-
- """.trimIndent() +
-
- items.distinctBy { it.version }.take(5).joinToString("\n") {
- val name = it.name.removePrefix("Android Studio").trim()
- val platform = "${it.platformVersion} (${it.platformBuild})"
-
- "| $name | ${it.date} | $platform |"
- } +
-
- """
-
-
-
-
- """.trimIndent()
-
- ).let {
- file(RELEASES_FILE_PATH_MD).writeText(it)
- }
+
+ ${items.distinctBy(Item::version).take(5).renderTable()}
+ $CHANNEL_BADGES_LIST
+
+ """).split("\n").joinToString("\n", transform = String::trim).let(file(RELEASES_FILE_PATH_MD)::writeText)
}
}
+fun List- .renderTable() = """
+ | Release Name | Channel | Release Date | Version | IntelliJ IDEA Version |
+ |--------------|:-------:|--------------|---------|-----------------------|
+""" + sortedByDescending { SemVer.parse(it.version) }.joinToString("\n") {
+ val name = it.name.removePrefix("Android Studio").trim()
+ val channel = it.channel.lowercase().run { "![$this][$this]" }
+ val date = it.date
+ val version = "${it.version} (${it.build})"
+ val platform = "${it.platformVersion} (${it.platformBuild})"
+
+ "| $name | $channel | $date | $version | $platform |"
+}
+
fun String.fetch(block: (String) -> T) = URL(this).openStream().use { inputStream ->
block(inputStream.readBytes().toString(Charsets.UTF_8))
}
diff --git a/topics/_generated/android_studio_releases.md b/topics/_generated/android_studio_releases.md
index 89cdd597d..7493bf23c 100644
--- a/topics/_generated/android_studio_releases.md
+++ b/topics/_generated/android_studio_releases.md
@@ -1,7 +1,9 @@
+
## 2021.x
+
| Release Name | Channel | Release Date | Version | IntelliJ IDEA Version |
|--------------|:-------:|--------------|---------|-----------------------|
| Dolphin (2021.3.1) Canary 5 | ![canary][canary] | March 3, 2022 | 2021.3.1 (AI-213.6777.52.2113.8233036) | 2021.3.2 (213.6777.52) |
@@ -42,8 +44,11 @@
| Bumblebee (2021.1.1) Canary 2 | ![canary][canary] | June 7, 2021 | 2021.1.1 (AI-211.6222.4.2111.7407564) | 2020.3.4 (211.6222.4) |
| Bumblebee (2021.1.1) Canary 1 | ![canary][canary] | May 18, 2021 | 2021.1.1 (AI-203.7717.56.2111.7361063) | 2020.3.3 (203.7717.56) |
+
+
## 2020.x
+
| Release Name | Channel | Release Date | Version | IntelliJ IDEA Version |
|--------------|:-------:|--------------|---------|-----------------------|
| Arctic Fox (2020.3.1) Patch 4 | ![patch][patch] | December 8, 2021 | 2020.3.1 (AI-203.7717.56.2031.7935034) | 2020.3.3 (203.7717.56) |
@@ -73,8 +78,11 @@
| 2020.3.1 Canary 2 | ![canary][canary] | December 3, 2020 | 2020.3.1 (AI-202.7319.50.2031.7006259) | 2020.2.2 (202.7319.50) |
| 2020.3.1 Canary 1 | ![canary][canary] | December 1, 2020 | 2020.3.1 (AI-202.7319.50.2031.6983675) | 2020.2.2 (202.7319.50) |
+
+
## 4.x
+
| Release Name | Channel | Release Date | Version | IntelliJ IDEA Version |
|--------------|:-------:|--------------|---------|-----------------------|
| 4.2.2 | ![release][release] | June 30, 2021 | 4.2.2 (AI-202.7660.26.42.7486908) | 2020.2.3 (202.7660.26) |
@@ -144,8 +152,11 @@
| 4.0 Canary 2 | ![canary][canary] | November 7, 2019 | 4.0 (AI-192.6817.14.36.5984562) | 2019.2.3 (192.6817.14) |
| 4.0 Canary 1 | ![canary][canary] | October 23, 2019 | 4.0 (AI-192.6817.14.36.5959023) | 2019.2.3 (192.6817.14) |
+
+
## 3.x
+
| Release Name | Channel | Release Date | Version | IntelliJ IDEA Version |
|--------------|:-------:|--------------|---------|-----------------------|
| 3.6.3 | ![release][release] | April 17, 2020 | 3.6.3 (AI-192.7142.36.36.6392135) | 2019.2.4 (192.7142.36) |
@@ -310,8 +321,11 @@
| 3.0 Canary 2 | ![canary][canary] | May 26, 2017 | 3.0 (AI-171.4041253) | 2017.1.0 (171.4041.0) |
| 3.0 Canary 1 | ![canary][canary] | May 17, 2017 | 3.0 (AI-171.4010489) | 2017.1.0 (171.4010.0) |
+
+
## 2.x
+
| Release Name | Channel | Release Date | Version | IntelliJ IDEA Version |
|--------------|:-------:|--------------|---------|-----------------------|
| 2.4 Preview 7 | ![preview][preview] | April 28, 2017 | 2.4 (AI-171.3934896) | 2017.1.0 (171.3934.0) |
@@ -321,23 +335,29 @@
| 2.3.3 | ![release][release] | June 8, 2017 | 2.3.3 (AI-162.4069837) | 2016.2.5 (162.4069.0) |
| 2.3.2 | ![release][release] | May 11, 2017 | 2.3.2 (AI-162.3934792) | 2016.2.5 (162.3934.0) |
+
[release]: https://img.shields.io/badge/-release-blue?style=flat-square
[patch]: https://img.shields.io/badge/-patch-orange?style=flat-square
[rc]: https://img.shields.io/badge/-rc-red?style=flat-square
[beta]: https://img.shields.io/badge/-beta-darkred?style=flat-square
[canary]: https://img.shields.io/badge/-canary-lightgrey?style=flat-square
-
-| Release Name | Release Date | IntelliJ IDEA Version |
-|--------------|--------------|-----------------------|
-| Dolphin (2021.3.1) Canary 5 | March 3, 2022 | 2021.3.2 (213.6777.52) |
-| Chipmunk (2021.2.1) Beta 3 | February 28, 2022 | 2021.2.4 (212.5712.43) |
-| Bumblebee (2021.1.1) Patch 2 | February 23, 2022 | 2021.1.3 (211.7628.21) |
-| Arctic Fox (2020.3.1) Patch 4 | December 8, 2021 | 2020.3.3 (203.7717.56) |
-| 4.2.2 | June 30, 2021 | 2020.2.3 (202.7660.26) |
+| Release Name | Channel | Release Date | Version | IntelliJ IDEA Version |
+|--------------|:-------:|--------------|---------|-----------------------|
+| Dolphin (2021.3.1) Canary 5 | ![canary][canary] | March 3, 2022 | 2021.3.1 (AI-213.6777.52.2113.8233036) | 2021.3.2 (213.6777.52) |
+| Chipmunk (2021.2.1) Beta 3 | ![beta][beta] | February 28, 2022 | 2021.2.1 (AI-212.5712.43.2112.8184640) | 2021.2.4 (212.5712.43) |
+| Bumblebee (2021.1.1) Patch 2 | ![patch][patch] | February 23, 2022 | 2021.1.1 (AI-211.7628.21.2111.8193401) | 2021.1.3 (211.7628.21) |
+| Arctic Fox (2020.3.1) Patch 4 | ![patch][patch] | December 8, 2021 | 2020.3.1 (AI-203.7717.56.2031.7935034) | 2020.3.3 (203.7717.56) |
+| 4.2.2 | ![release][release] | June 30, 2021 | 4.2.2 (AI-202.7660.26.42.7486908) | 2020.2.3 (202.7660.26) |
+
+[release]: https://img.shields.io/badge/-release-blue?style=flat-square
+[patch]: https://img.shields.io/badge/-patch-orange?style=flat-square
+[rc]: https://img.shields.io/badge/-rc-red?style=flat-square
+[beta]: https://img.shields.io/badge/-beta-darkred?style=flat-square
+[canary]: https://img.shields.io/badge/-canary-lightgrey?style=flat-square
diff --git a/topics/_generated/android_studio_releases.xml b/topics/_generated/android_studio_releases.xml
index b9caa5c20..4b3a537db 100644
--- a/topics/_generated/android_studio_releases.xml
+++ b/topics/_generated/android_studio_releases.xml
@@ -1,4 +1,4 @@
-
+
-
Android Studio Dolphin (2021.3.1) Canary 5
AI-213.6777.52.2113.8233036
diff --git a/topics/products/androidstudio/android_studio_releases_list.md b/topics/products/androidstudio/android_studio_releases_list.md
index 7e4a80ebf..6ba19b1cc 100644
--- a/topics/products/androidstudio/android_studio_releases_list.md
+++ b/topics/products/androidstudio/android_studio_releases_list.md
@@ -2,4 +2,11 @@
+This page contains a complete list of the Android Studio releases with the relevant IntelliJ IDEA release version specified.
+
+Android Studio releases are grouped by major versions.
+Each entry specifies the exact release channel (like a canary, beta, RC, release, patch), release date, and exact IDE version with build number for the actual IDE and the IntelliJ IDEA platform that Android Studio is based on.
+
+To get an insight on how to develop a plugin for Android Studio, visit the [Android Studio Plugin Development](android_studio.md) section.
+