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.config.KotlinCompilerVersion
|
||||||
import org.jetbrains.kotlin.idea.framework.ui.ConfigureDialogWithModulesAndVersion
|
import org.jetbrains.kotlin.idea.framework.ui.ConfigureDialogWithModulesAndVersion
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.Versions
|
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.asNullable
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.compute
|
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.safe
|
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.core.service.KotlinVersionProviderService
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.settings.version.Version
|
import org.jetbrains.kotlin.tools.projectWizard.settings.version.Version
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.wizard.KotlinNewProjectWizardUIBundle
|
import org.jetbrains.kotlin.tools.projectWizard.wizard.KotlinNewProjectWizardUIBundle
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.wizard.ui.runWithProgressBar
|
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 {
|
class IdeaKotlinVersionProviderService : KotlinVersionProviderService, IdeaWizardService {
|
||||||
override fun getKotlinVersion(): Version =
|
override fun getKotlinVersion(): Version =
|
||||||
@@ -68,28 +63,3 @@ private object VersionsDownloader {
|
|||||||
ConfigureDialogWithModulesAndVersion.loadVersions("1.0.0")
|
ConfigureDialogWithModulesAndVersion.loadVersions("1.0.0")
|
||||||
}.asNullable?.firstOrNull { !it.contains(SNAPSHOT_TAG, ignoreCase = true) }?.let { Version.fromString(it) }
|
}.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
|
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.core.service.KotlinVersionProviderService
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.settings.version.Version
|
import org.jetbrains.kotlin.tools.projectWizard.settings.version.Version
|
||||||
|
|
||||||
@@ -12,6 +13,8 @@ class KotlinVersionProviderTestWizardService : KotlinVersionProviderService, Tes
|
|||||||
override fun getKotlinVersion(): Version = TEST_KOTLIN_VERSION
|
override fun getKotlinVersion(): Version = TEST_KOTLIN_VERSION
|
||||||
|
|
||||||
companion object {
|
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
|
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.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.DefaultRepository
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Repositories
|
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.buildsystem.Repository
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.settings.version.Version
|
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 {
|
interface KotlinVersionProviderService : WizardService {
|
||||||
fun getKotlinVersion(): Version
|
fun getKotlinVersion(): Version
|
||||||
@@ -36,4 +45,33 @@ enum class KotlinVersionKind(val repository: Repository) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
val KotlinVersionKind.isStable
|
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