Wizard: download latest dev version for tests from bintray
This commit is contained in:
+1
-31
@@ -11,18 +11,13 @@ import org.jetbrains.annotations.NonNls
|
||||
import org.jetbrains.kotlin.config.KotlinCompilerVersion
|
||||
import org.jetbrains.kotlin.idea.framework.ui.ConfigureDialogWithModulesAndVersion
|
||||
import org.jetbrains.kotlin.tools.projectWizard.Versions
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.TaskResult
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.asNullable
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.compute
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.safe
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.service.EapVersionDownloader
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.service.KotlinVersionProviderService
|
||||
import org.jetbrains.kotlin.tools.projectWizard.settings.version.Version
|
||||
import org.jetbrains.kotlin.tools.projectWizard.wizard.KotlinNewProjectWizardUIBundle
|
||||
import org.jetbrains.kotlin.tools.projectWizard.wizard.ui.runWithProgressBar
|
||||
import java.io.BufferedReader
|
||||
import java.io.InputStreamReader
|
||||
import java.net.URL
|
||||
import java.util.stream.Collectors
|
||||
|
||||
class IdeaKotlinVersionProviderService : KotlinVersionProviderService, IdeaWizardService {
|
||||
override fun getKotlinVersion(): Version =
|
||||
@@ -68,28 +63,3 @@ private object VersionsDownloader {
|
||||
ConfigureDialogWithModulesAndVersion.loadVersions("1.0.0")
|
||||
}.asNullable?.firstOrNull { !it.contains(SNAPSHOT_TAG, ignoreCase = true) }?.let { Version.fromString(it) }
|
||||
}
|
||||
|
||||
private object EapVersionDownloader {
|
||||
fun getLatestEapVersion() = downloadVersions(EAP_URL).firstOrNull()
|
||||
|
||||
private fun downloadPage(url: String): TaskResult<String> = safe {
|
||||
BufferedReader(InputStreamReader(URL(url).openStream())).lines().collect(Collectors.joining("\n"))
|
||||
}
|
||||
|
||||
@Suppress("SameParameterValue")
|
||||
private fun downloadVersions(url: String): List<Version> = compute {
|
||||
val (text) = downloadPage(url)
|
||||
versionRegexp.findAll(text)
|
||||
.map { it.groupValues[1].removeSuffix("/") }
|
||||
.filter { it.isNotEmpty() && it[0].isDigit() }
|
||||
.map { Version.fromString(it) }
|
||||
.toList()
|
||||
.asReversed()
|
||||
}.asNullable.orEmpty()
|
||||
|
||||
@NonNls
|
||||
private val EAP_URL = "https://dl.bintray.com/kotlin/kotlin-eap/org/jetbrains/kotlin/jvm/org.jetbrains.kotlin.jvm.gradle.plugin/"
|
||||
|
||||
@NonNls
|
||||
private val versionRegexp = """href="([^"\\]+)"""".toRegex()
|
||||
}
|
||||
+4
-1
@@ -5,6 +5,7 @@
|
||||
|
||||
package org.jetbrains.kotlin.tools.projectWizard.cli
|
||||
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.service.EapVersionDownloader
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.service.KotlinVersionProviderService
|
||||
import org.jetbrains.kotlin.tools.projectWizard.settings.version.Version
|
||||
|
||||
@@ -12,6 +13,8 @@ class KotlinVersionProviderTestWizardService : KotlinVersionProviderService, Tes
|
||||
override fun getKotlinVersion(): Version = TEST_KOTLIN_VERSION
|
||||
|
||||
companion object {
|
||||
val TEST_KOTLIN_VERSION = Version("1.4.0-dev-5730")
|
||||
val TEST_KOTLIN_VERSION by lazy {
|
||||
EapVersionDownloader.getLatestDevVersion()!!
|
||||
}
|
||||
}
|
||||
}
|
||||
+39
-1
@@ -5,11 +5,20 @@
|
||||
|
||||
package org.jetbrains.kotlin.tools.projectWizard.core.service
|
||||
|
||||
import org.jetbrains.annotations.NonNls
|
||||
import org.jetbrains.kotlin.tools.projectWizard.Versions
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.TaskResult
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.asNullable
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.compute
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.safe
|
||||
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.DefaultRepository
|
||||
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Repositories
|
||||
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Repository
|
||||
import org.jetbrains.kotlin.tools.projectWizard.settings.version.Version
|
||||
import java.io.BufferedReader
|
||||
import java.io.InputStreamReader
|
||||
import java.net.URL
|
||||
import java.util.stream.Collectors
|
||||
|
||||
interface KotlinVersionProviderService : WizardService {
|
||||
fun getKotlinVersion(): Version
|
||||
@@ -36,4 +45,33 @@ enum class KotlinVersionKind(val repository: Repository) {
|
||||
}
|
||||
|
||||
val KotlinVersionKind.isStable
|
||||
get() = this == KotlinVersionKind.STABLE
|
||||
get() = this == KotlinVersionKind.STABLE
|
||||
|
||||
object EapVersionDownloader {
|
||||
fun getLatestEapVersion() = downloadVersions(EAP_URL).firstOrNull()
|
||||
fun getLatestDevVersion() = downloadVersions(DEV_URL).firstOrNull()
|
||||
|
||||
private fun downloadPage(url: String): TaskResult<String> = safe {
|
||||
BufferedReader(InputStreamReader(URL(url).openStream())).lines().collect(Collectors.joining("\n"))
|
||||
}
|
||||
|
||||
@Suppress("SameParameterValue")
|
||||
private fun downloadVersions(url: String): List<Version> = compute {
|
||||
val (text) = downloadPage(url)
|
||||
versionRegexp.findAll(text)
|
||||
.map { it.groupValues[1].removeSuffix("/") }
|
||||
.filter { it.isNotEmpty() && it[0].isDigit() }
|
||||
.map { Version.fromString(it) }
|
||||
.toList()
|
||||
.asReversed()
|
||||
}.asNullable.orEmpty()
|
||||
|
||||
@NonNls
|
||||
private val EAP_URL = "https://dl.bintray.com/kotlin/kotlin-eap/org/jetbrains/kotlin/jvm/org.jetbrains.kotlin.jvm.gradle.plugin/"
|
||||
|
||||
@NonNls
|
||||
private val DEV_URL = "https://dl.bintray.com/kotlin/kotlin-dev/org/jetbrains/kotlin/jvm/org.jetbrains.kotlin.jvm.gradle.plugin/"
|
||||
|
||||
@NonNls
|
||||
private val versionRegexp = """href="([^"\\]+)"""".toRegex()
|
||||
}
|
||||
Reference in New Issue
Block a user