diff --git a/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/service/IdeaKotlinVersionProviderService.kt b/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/service/IdeaKotlinVersionProviderService.kt index fce8f96f3b9..855ef76c5c3 100644 --- a/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/service/IdeaKotlinVersionProviderService.kt +++ b/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/service/IdeaKotlinVersionProviderService.kt @@ -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 = safe { - BufferedReader(InputStreamReader(URL(url).openStream())).lines().collect(Collectors.joining("\n")) - } - - @Suppress("SameParameterValue") - private fun downloadVersions(url: String): List = 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() -} \ No newline at end of file diff --git a/libraries/tools/new-project-wizard/new-project-wizard-cli/tests/org/jetbrains/kotlin/tools/projectWizard/cli/KotlinVersionProviderTestWizardService.kt b/libraries/tools/new-project-wizard/new-project-wizard-cli/tests/org/jetbrains/kotlin/tools/projectWizard/cli/KotlinVersionProviderTestWizardService.kt index 24c2d2552ec..50ce2363268 100644 --- a/libraries/tools/new-project-wizard/new-project-wizard-cli/tests/org/jetbrains/kotlin/tools/projectWizard/cli/KotlinVersionProviderTestWizardService.kt +++ b/libraries/tools/new-project-wizard/new-project-wizard-cli/tests/org/jetbrains/kotlin/tools/projectWizard/cli/KotlinVersionProviderTestWizardService.kt @@ -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()!! + } } } \ No newline at end of file diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/service/KotlinVersionProviderService.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/service/KotlinVersionProviderService.kt index 7739fb33c40..4a2b634a156 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/service/KotlinVersionProviderService.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/service/KotlinVersionProviderService.kt @@ -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 \ No newline at end of file + get() = this == KotlinVersionKind.STABLE + +object EapVersionDownloader { + fun getLatestEapVersion() = downloadVersions(EAP_URL).firstOrNull() + fun getLatestDevVersion() = downloadVersions(DEV_URL).firstOrNull() + + private fun downloadPage(url: String): TaskResult = safe { + BufferedReader(InputStreamReader(URL(url).openStream())).lines().collect(Collectors.joining("\n")) + } + + @Suppress("SameParameterValue") + private fun downloadVersions(url: String): List = 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() +} \ No newline at end of file