mirror of
https://github.com/jlengrand/kotlin.git
synced 2026-04-17 08:31:31 +00:00
Wizard: use cache redirector on project importing tests
This commit is contained in:
@@ -64,4 +64,5 @@ testsJar()
|
||||
projectTest {
|
||||
dependsOn(":dist")
|
||||
workingDir = rootDir
|
||||
systemProperty("cacheRedirectorEnabled", findProperty("cacheRedirectorEnabled")?.toString()?.toBoolean() == true)
|
||||
}
|
||||
|
||||
@@ -14,17 +14,20 @@ import org.jetbrains.kotlin.tools.projectWizard.Versions
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.asNullable
|
||||
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.WizardKotlinVersion
|
||||
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
|
||||
|
||||
class IdeaKotlinVersionProviderService : KotlinVersionProviderService, IdeaWizardService {
|
||||
override fun getKotlinVersion(): Version =
|
||||
getPatchedKotlinVersion()
|
||||
class IdeaKotlinVersionProviderService : KotlinVersionProviderService(), IdeaWizardService {
|
||||
override fun getKotlinVersion(): WizardKotlinVersion {
|
||||
val version = getPatchedKotlinVersion()
|
||||
?: getKotlinVersionFromCompiler()
|
||||
?: VersionsDownloader.downloadLatestEapOrStableKotlinVersion()
|
||||
?: Versions.KOTLIN
|
||||
return kotlinVersionWithDefaultValues(version)
|
||||
}
|
||||
|
||||
private fun getPatchedKotlinVersion() =
|
||||
if (ApplicationManager.getApplication().isInternal) {
|
||||
|
||||
@@ -6,13 +6,41 @@
|
||||
package org.jetbrains.kotlin.tools.projectWizard.cli
|
||||
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.service.EapVersionDownloader
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.service.WizardKotlinVersion
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.service.KotlinVersionKind
|
||||
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.buildsystem.BintrayRepository
|
||||
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.DefaultRepository
|
||||
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Repository
|
||||
|
||||
class KotlinVersionProviderTestWizardService : KotlinVersionProviderService, TestWizardService {
|
||||
override fun getKotlinVersion(): Version = TEST_KOTLIN_VERSION
|
||||
class KotlinVersionProviderTestWizardService() : KotlinVersionProviderService(), TestWizardService {
|
||||
private val useCacheRedirector
|
||||
get() = System.getProperty("cacheRedirectorEnabled")?.toBoolean() == true
|
||||
|
||||
|
||||
override fun getKotlinVersion(): WizardKotlinVersion =
|
||||
kotlinVersionWithDefaultValues(TEST_KOTLIN_VERSION)
|
||||
|
||||
override fun getKotlinVersionRepository(versionKind: KotlinVersionKind): Repository = if (useCacheRedirector) {
|
||||
getKotlinVersionRepositoryWithCacheRedirector(versionKind)
|
||||
} else {
|
||||
super.getKotlinVersionRepository(versionKind)
|
||||
}
|
||||
|
||||
private fun getKotlinVersionRepositoryWithCacheRedirector(versionKind: KotlinVersionKind): Repository = when (versionKind) {
|
||||
KotlinVersionKind.STABLE -> DefaultRepository.MAVEN_CENTRAL
|
||||
KotlinVersionKind.EAP -> KOTLIN_EAP_BINTRAY_WITH_CACHE_REDIRECTOR
|
||||
KotlinVersionKind.DEV -> KOTLIN_DEV_BINTRAY_WITH_CACHE_REDIRECTOR
|
||||
KotlinVersionKind.M -> KOTLIN_EAP_BINTRAY_WITH_CACHE_REDIRECTOR
|
||||
}
|
||||
|
||||
companion object {
|
||||
private const val CACHE_REDIRECTOR_BINTRAY_URL = "https://cache-redirector.jetbrains.com/dl.bintray.com"
|
||||
|
||||
private val KOTLIN_EAP_BINTRAY_WITH_CACHE_REDIRECTOR = BintrayRepository("kotlin/kotlin-eap", CACHE_REDIRECTOR_BINTRAY_URL)
|
||||
private val KOTLIN_DEV_BINTRAY_WITH_CACHE_REDIRECTOR = BintrayRepository("kotlin/kotlin-dev", CACHE_REDIRECTOR_BINTRAY_URL)
|
||||
|
||||
|
||||
val TEST_KOTLIN_VERSION by lazy {
|
||||
EapVersionDownloader.getLatestDevVersion()!!
|
||||
}
|
||||
|
||||
@@ -20,28 +20,47 @@ import java.io.InputStreamReader
|
||||
import java.net.URL
|
||||
import java.util.stream.Collectors
|
||||
|
||||
interface KotlinVersionProviderService : WizardService {
|
||||
fun getKotlinVersion(): Version
|
||||
}
|
||||
data class WizardKotlinVersion(val version: Version, val kind: KotlinVersionKind, val repository: Repository)
|
||||
|
||||
class KotlinVersionProviderServiceImpl : KotlinVersionProviderService, IdeaIndependentWizardService {
|
||||
override fun getKotlinVersion(): Version = Versions.KOTLIN
|
||||
}
|
||||
abstract class KotlinVersionProviderService : WizardService {
|
||||
abstract fun getKotlinVersion(): WizardKotlinVersion
|
||||
|
||||
protected fun kotlinVersionWithDefaultValues(version: Version) = WizardKotlinVersion(
|
||||
version,
|
||||
getKotlinVersionKind(version),
|
||||
getKotlinVersionRepository(version)
|
||||
)
|
||||
|
||||
val Version.kotlinVersionKind
|
||||
get() = when {
|
||||
"eap" in toString().toLowerCase() -> KotlinVersionKind.EAP
|
||||
"dev" in toString().toLowerCase() -> KotlinVersionKind.DEV
|
||||
"m" in toString().toLowerCase() -> KotlinVersionKind.M
|
||||
else -> KotlinVersionKind.STABLE
|
||||
protected open fun getKotlinVersionRepository(versionKind: KotlinVersionKind): Repository = when (versionKind) {
|
||||
KotlinVersionKind.STABLE -> DefaultRepository.MAVEN_CENTRAL
|
||||
KotlinVersionKind.EAP -> Repositories.KOTLIN_EAP_BINTRAY
|
||||
KotlinVersionKind.M -> Repositories.KOTLIN_EAP_BINTRAY
|
||||
KotlinVersionKind.DEV -> Repositories.KOTLIN_DEV_BINTRAY
|
||||
}
|
||||
|
||||
enum class KotlinVersionKind(val repository: Repository) {
|
||||
STABLE(repository = DefaultRepository.MAVEN_CENTRAL),
|
||||
EAP(repository = Repositories.KOTLIN_EAP_BINTRAY),
|
||||
DEV(repository = Repositories.KOTLIN_DEV_BINTRAY),
|
||||
M(repository = Repositories.KOTLIN_EAP_BINTRAY)
|
||||
private fun getKotlinVersionRepository(version: Version) =
|
||||
getKotlinVersionRepository(getKotlinVersionKind(version))
|
||||
|
||||
private fun getKotlinVersionKind(version: Version) = when {
|
||||
"eap" in version.toString().toLowerCase() -> KotlinVersionKind.EAP
|
||||
"dev" in version.toString().toLowerCase() -> KotlinVersionKind.DEV
|
||||
"m" in version.toString().toLowerCase() -> KotlinVersionKind.M
|
||||
else -> KotlinVersionKind.STABLE
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
class KotlinVersionProviderServiceImpl : KotlinVersionProviderService(), IdeaIndependentWizardService {
|
||||
override fun getKotlinVersion(): WizardKotlinVersion =
|
||||
kotlinVersionWithDefaultValues(Versions.KOTLIN)
|
||||
}
|
||||
|
||||
|
||||
enum class KotlinVersionKind {
|
||||
STABLE,
|
||||
EAP,
|
||||
DEV,
|
||||
M
|
||||
}
|
||||
|
||||
val KotlinVersionKind.isStable
|
||||
|
||||
@@ -2,6 +2,7 @@ package org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem
|
||||
|
||||
import org.jetbrains.annotations.NonNls
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.ignore
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.service.WizardKotlinVersion
|
||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.gradle.GradleIR
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.printer.BuildFilePrinter
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.printer.GradlePrinter
|
||||
@@ -39,7 +40,7 @@ data class GradleOnlyPluginByNameIR(@NonNls val pluginId: String, override val p
|
||||
|
||||
data class KotlinBuildSystemPluginIR(
|
||||
val type: Type,
|
||||
val version: Version?,
|
||||
val version: WizardKotlinVersion?,
|
||||
override val priority: Int? = null
|
||||
) : BuildSystemPluginIR {
|
||||
|
||||
@@ -49,7 +50,7 @@ data class KotlinBuildSystemPluginIR(
|
||||
GradlePrinter.GradleDsl.KOTLIN -> call("kotlin") { +type.toString().quotified }
|
||||
GradlePrinter.GradleDsl.GROOVY -> call("id") { +"org.jetbrains.kotlin.$type".quotified }
|
||||
}
|
||||
version?.let {
|
||||
version?.version?.let {
|
||||
+" version "
|
||||
+it.toString().quotified
|
||||
}.ignore()
|
||||
@@ -57,7 +58,7 @@ data class KotlinBuildSystemPluginIR(
|
||||
is MavenPrinter -> node("plugin") {
|
||||
singleLineNode("groupId") { +"org.jetbrains.kotlin" }
|
||||
singleLineNode("artifactId") { +"kotlin-maven-plugin" }
|
||||
singleLineNode("version") { +version.toString() }
|
||||
singleLineNode("version") { +version?.version.toString() }
|
||||
|
||||
node("executions") {
|
||||
node("execution") {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem
|
||||
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.service.kotlinVersionKind
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.service.WizardKotlinVersion
|
||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.gradle.GradleIR
|
||||
import org.jetbrains.kotlin.tools.projectWizard.library.LibraryArtifact
|
||||
import org.jetbrains.kotlin.tools.projectWizard.library.MavenArtifact
|
||||
@@ -8,9 +8,7 @@ import org.jetbrains.kotlin.tools.projectWizard.library.NpmArtifact
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.printer.BuildFilePrinter
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.printer.GradlePrinter
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.printer.MavenPrinter
|
||||
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.DefaultRepository.Companion.MAVEN_CENTRAL
|
||||
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.ModulePath
|
||||
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Repository
|
||||
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.SourcesetType
|
||||
import org.jetbrains.kotlin.tools.projectWizard.settings.version.Version
|
||||
|
||||
@@ -112,14 +110,15 @@ data class ArtifactBasedLibraryDependencyIR(
|
||||
|
||||
abstract class KotlinLibraryDependencyIR(
|
||||
val artifactName: String,
|
||||
override val version: Version,
|
||||
override val dependencyType: DependencyType
|
||||
) : LibraryDependencyIR {
|
||||
abstract val kotlinVersion: WizardKotlinVersion
|
||||
final override val version: Version get() = kotlinVersion.version
|
||||
abstract val isInMppModule: Boolean
|
||||
|
||||
override val artifact: LibraryArtifact
|
||||
get() = MavenArtifact(
|
||||
version.kotlinVersionKind.repository,
|
||||
kotlinVersion.repository,
|
||||
"org.jetbrains.kotlin",
|
||||
"kotlin-$artifactName"
|
||||
)
|
||||
@@ -153,18 +152,18 @@ abstract class KotlinLibraryDependencyIR(
|
||||
data class KotlinStdlibDependencyIR(
|
||||
val type: StdlibType,
|
||||
override val isInMppModule: Boolean,
|
||||
override val version: Version,
|
||||
override val kotlinVersion: WizardKotlinVersion,
|
||||
override val dependencyType: DependencyType
|
||||
) : KotlinLibraryDependencyIR(type.artifact, version, dependencyType) {
|
||||
) : KotlinLibraryDependencyIR(type.artifact, dependencyType) {
|
||||
override fun withDependencyType(type: DependencyType): KotlinStdlibDependencyIR = copy(dependencyType = type)
|
||||
}
|
||||
|
||||
data class KotlinArbitraryDependencyIR(
|
||||
val name: String,
|
||||
override val isInMppModule: Boolean,
|
||||
override val version: Version,
|
||||
override val kotlinVersion: WizardKotlinVersion,
|
||||
override val dependencyType: DependencyType
|
||||
) : KotlinLibraryDependencyIR(name, version, dependencyType) {
|
||||
) : KotlinLibraryDependencyIR(name, dependencyType) {
|
||||
override fun withDependencyType(type: DependencyType): KotlinArbitraryDependencyIR = copy(dependencyType = type)
|
||||
}
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@ import org.jetbrains.kotlin.tools.projectWizard.core.entity.settings.ModuleConfi
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.settings.PluginSettingReference
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.settings.SettingType
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.settings.reference
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.service.kotlinVersionKind
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.service.WizardKotlinVersion
|
||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.*
|
||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.gradle.AndroidConfigIR
|
||||
import org.jetbrains.kotlin.tools.projectWizard.library.MavenArtifact
|
||||
@@ -111,11 +111,11 @@ interface AndroidModuleConfigurator : ModuleConfigurator,
|
||||
}
|
||||
|
||||
companion object {
|
||||
fun createRepositories(kotlinVersion: Version) = buildList<Repository> {
|
||||
fun createRepositories(kotlinVersion: WizardKotlinVersion) = buildList<Repository> {
|
||||
+DefaultRepository.GRADLE_PLUGIN_PORTAL
|
||||
+DefaultRepository.GOOGLE
|
||||
+DefaultRepository.JCENTER
|
||||
addIfNotNull(kotlinVersion.kotlinVersionKind.repository)
|
||||
+kotlinVersion.repository
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,7 +5,6 @@ import org.jetbrains.annotations.NonNls
|
||||
import org.jetbrains.kotlin.tools.projectWizard.KotlinNewProjectWizardBundle
|
||||
import org.jetbrains.kotlin.tools.projectWizard.Versions
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.*
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.service.kotlinVersionKind
|
||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.*
|
||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.gradle.BuildScriptDependencyIR
|
||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.gradle.BuildScriptRepositoryIR
|
||||
@@ -45,13 +44,13 @@ object AndroidSinglePlatformModuleConfigurator :
|
||||
DefaultRepository.GRADLE_PLUGIN_PORTAL,
|
||||
DefaultRepository.JCENTER,
|
||||
DefaultRepository.GOOGLE,
|
||||
configurationData.kotlinVersion.kotlinVersionKind.repository
|
||||
configurationData.kotlinVersion.repository
|
||||
).forEach { repository ->
|
||||
+BuildScriptRepositoryIR(RepositoryIR((repository)))
|
||||
}
|
||||
|
||||
irsList {
|
||||
"classpath"(const("org.jetbrains.kotlin:kotlin-gradle-plugin:${configurationData.kotlinVersion}"))
|
||||
"classpath"(const("org.jetbrains.kotlin:kotlin-gradle-plugin:${configurationData.kotlinVersion.version}"))
|
||||
"classpath"(const("com.android.tools.build:gradle:${Versions.GRADLE_PLUGINS.ANDROID}"))
|
||||
}.forEach {
|
||||
+BuildScriptDependencyIR(it)
|
||||
|
||||
@@ -63,7 +63,7 @@ interface ModuleConfiguratorWithTests : ModuleConfiguratorWithSettings {
|
||||
dependencyName,
|
||||
isInMppModule = module.kind
|
||||
.let { it == ModuleKind.multiplatform || it == ModuleKind.target },
|
||||
version = KotlinPlugin::version.propertyValue,
|
||||
kotlinVersion = KotlinPlugin::version.propertyValue,
|
||||
dependencyType = DependencyType.TEST
|
||||
)
|
||||
}
|
||||
|
||||
@@ -23,7 +23,10 @@ import org.jetbrains.kotlin.tools.projectWizard.settings.version.Version
|
||||
import java.nio.file.Path
|
||||
|
||||
class KotlinPlugin(context: Context) : Plugin(context) {
|
||||
val version by property(Versions.KOTLIN)
|
||||
val version by property(
|
||||
// todo do not hardcode kind & repository
|
||||
WizardKotlinVersion(Versions.KOTLIN, KotlinVersionKind.M, Repositories.KOTLIN_EAP_BINTRAY)
|
||||
)
|
||||
|
||||
val initKotlinVersions by pipelineTask(GenerationPhase.PREPARE_GENERATION) {
|
||||
title = KotlinNewProjectWizardBundle.message("plugin.kotlin.downloading.kotlin.versions")
|
||||
@@ -93,10 +96,9 @@ class KotlinPlugin(context: Context) : Plugin(context) {
|
||||
val createPluginRepositories by pipelineTask(GenerationPhase.PROJECT_GENERATION) {
|
||||
runBefore(BuildSystemPlugin::createModules)
|
||||
withAction {
|
||||
val pluginRepository = KotlinPlugin::version.propertyValue.kotlinVersionKind
|
||||
.takeUnless(KotlinVersionKind::isStable)
|
||||
?.repository
|
||||
?: return@withAction UNIT_SUCCESS
|
||||
val version = KotlinPlugin::version.propertyValue
|
||||
if (version.kind.isStable) return@withAction UNIT_SUCCESS
|
||||
val pluginRepository = version.repository
|
||||
BuildSystemPlugin::pluginRepositoreis.addValues(pluginRepository) andThen
|
||||
updateBuildFiles { buildFile ->
|
||||
buildFile.withIrs(RepositoryIR(pluginRepository)).asSuccess()
|
||||
|
||||
@@ -5,6 +5,7 @@ import kotlinx.collections.immutable.toPersistentList
|
||||
|
||||
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.*
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.service.WizardKotlinVersion
|
||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.*
|
||||
import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.*
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.buildSystem.BuildSystemType
|
||||
@@ -19,7 +20,7 @@ data class ModulesToIrConversionData(
|
||||
val rootModules: List<Module>,
|
||||
val projectPath: Path,
|
||||
val projectName: String,
|
||||
val kotlinVersion: Version,
|
||||
val kotlinVersion: WizardKotlinVersion,
|
||||
val buildSystemType: BuildSystemType,
|
||||
val pomIr: PomIR
|
||||
) {
|
||||
@@ -147,7 +148,7 @@ class ModulesToIRsConverter(
|
||||
KotlinStdlibDependencyIR(
|
||||
type = stdlibType,
|
||||
isInMppModule = false,
|
||||
version = data.kotlinVersion,
|
||||
kotlinVersion = data.kotlinVersion,
|
||||
dependencyType = DependencyType.MAIN
|
||||
)
|
||||
}
|
||||
@@ -243,7 +244,7 @@ class ModulesToIRsConverter(
|
||||
KotlinStdlibDependencyIR(
|
||||
type = stdlibType,
|
||||
isInMppModule = true,
|
||||
version = data.kotlinVersion,
|
||||
kotlinVersion = data.kotlinVersion,
|
||||
dependencyType = DependencyType.MAIN
|
||||
)
|
||||
}
|
||||
|
||||
@@ -30,8 +30,8 @@ data class DefaultRepository(val type: Type) : Repository {
|
||||
|
||||
interface CustomMavenRepository : Repository
|
||||
|
||||
data class BintrayRepository(val repository: String) : CustomMavenRepository {
|
||||
override val url: String = "https://dl.bintray.com/$repository"
|
||||
data class BintrayRepository(val repository: String, val base: String = "https://dl.bintray.com") : CustomMavenRepository {
|
||||
override val url: String = "$base/$repository"
|
||||
|
||||
override val idForMaven: String
|
||||
get() = "bintray." + repository.replace('/', '.')
|
||||
|
||||
@@ -78,13 +78,13 @@ class SimpleJsClientTemplate : Template() {
|
||||
|
||||
val kotlinVersion = KotlinPlugin::version.propertyValue
|
||||
if (renderEngine.reference.settingValue != RenderEngine.KOTLINX_HTML) {
|
||||
+Dependencies.KOTLIN_REACT(kotlinVersion)
|
||||
+Dependencies.KOTLIN_REACT_DOM(kotlinVersion)
|
||||
+Dependencies.KOTLIN_REACT(kotlinVersion.version)
|
||||
+Dependencies.KOTLIN_REACT_DOM(kotlinVersion.version)
|
||||
+Dependencies.NPM_REACT
|
||||
+Dependencies.NPM_REACT_DOM
|
||||
if (renderEngine.reference.settingValue == RenderEngine.REACT_WITH_STYLED) {
|
||||
+Dependencies.NPM_REACT_IS
|
||||
+Dependencies.KOTLIN_STYLED(kotlinVersion)
|
||||
+Dependencies.KOTLIN_STYLED(kotlinVersion.version)
|
||||
+Dependencies.NPM_STYLED_COMPONENTS
|
||||
+Dependencies.NPM_INLINE_STYLE_PREFIXER
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user