mirror of
https://github.com/jlengrand/kotlin.git
synced 2026-04-19 00:21:28 +00:00
[Gradle, JS] Activate legacy plugin and new plugin via gradle property
This commit is contained in:
@@ -77,6 +77,8 @@ abstract class KotlinBasePluginWrapper(
|
||||
|
||||
kotlinGradleBuildServices.detectKotlinPluginLoadedInMultipleProjects(project, kotlinPluginVersion)
|
||||
|
||||
defineExtension(project)
|
||||
|
||||
project.createKotlinExtension(projectExtensionClass).apply {
|
||||
fun kotlinSourceSetContainer(factory: NamedDomainObjectFactory<KotlinSourceSet>) =
|
||||
project.container(KotlinSourceSet::class.java, factory)
|
||||
@@ -107,6 +109,9 @@ abstract class KotlinBasePluginWrapper(
|
||||
project: Project,
|
||||
kotlinGradleBuildServices: KotlinGradleBuildServices
|
||||
): Plugin<Project>
|
||||
|
||||
protected open fun defineExtension(project: Project) {
|
||||
}
|
||||
}
|
||||
|
||||
open class KotlinPluginWrapper @Inject constructor(
|
||||
@@ -156,11 +161,28 @@ open class Kotlin2JsPluginWrapper @Inject constructor(
|
||||
open class KotlinJsPluginWrapper @Inject constructor(
|
||||
fileResolver: FileResolver
|
||||
) : KotlinBasePluginWrapper(fileResolver) {
|
||||
override fun getPlugin(project: Project, kotlinGradleBuildServices: KotlinGradleBuildServices): Plugin<Project> =
|
||||
KotlinJsPlugin(kotlinPluginVersion)
|
||||
override fun getPlugin(project: Project, kotlinGradleBuildServices: KotlinGradleBuildServices): Plugin<Project> {
|
||||
val propertiesProvider = PropertiesProvider(project)
|
||||
|
||||
override val projectExtensionClass: KClass<out KotlinJsProjectExtension>
|
||||
get() = KotlinJsProjectExtension::class
|
||||
return when (propertiesProvider.jsMode) {
|
||||
JsMode.IR -> KotlinJsIrPlugin(kotlinPluginVersion)
|
||||
JsMode.LEGACY -> KotlinJsPlugin(kotlinPluginVersion)
|
||||
JsMode.MIXED -> KotlinJsPlugin(kotlinPluginVersion)
|
||||
}
|
||||
}
|
||||
|
||||
override lateinit var projectExtensionClass: KClass<out KotlinProjectExtension>
|
||||
|
||||
override fun defineExtension(project: Project) {
|
||||
val propertiesProvider = PropertiesProvider(project)
|
||||
|
||||
when (propertiesProvider.jsMode) {
|
||||
JsMode.IR -> projectExtensionClass = KotlinJsIrProjectExtension::class
|
||||
JsMode.LEGACY -> projectExtensionClass = KotlinJsProjectExtension::class
|
||||
JsMode.MIXED -> {
|
||||
} //TODO MIXED MODE
|
||||
}
|
||||
}
|
||||
|
||||
override fun createTestRegistry(project: Project) = KotlinTestsRegistry(project, "test")
|
||||
}
|
||||
|
||||
@@ -168,6 +168,12 @@ internal class PropertiesProvider private constructor(private val project: Proje
|
||||
val jsDiscoverTypes: Boolean?
|
||||
get() = booleanProperty("kotlin.js.experimental.discoverTypes")
|
||||
|
||||
/**
|
||||
* Use Kotlin/JS backend mode
|
||||
*/
|
||||
val jsMode: JsMode
|
||||
get() = property("kotlin.js.mode")?.let { JsMode.byCompilerArgument(it) } ?: JsMode.IR
|
||||
|
||||
private fun propertyWithDeprecatedVariant(propName: String, deprecatedPropName: String): String? {
|
||||
val deprecatedProperty = property(deprecatedPropName)
|
||||
if (deprecatedProperty != null) {
|
||||
@@ -201,3 +207,14 @@ internal class PropertiesProvider private constructor(private val project: Proje
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
internal enum class JsMode {
|
||||
LEGACY,
|
||||
IR,
|
||||
MIXED;
|
||||
|
||||
companion object {
|
||||
fun byCompilerArgument(argument: String): JsMode? =
|
||||
JsMode.values().firstOrNull { it.name.equals(argument, ignoreCase = true) }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1 +1 @@
|
||||
implementation-class=org.jetbrains.kotlin.gradle.plugin.KotlinJsIrPluginWrapper
|
||||
implementation-class=org.jetbrains.kotlin.gradle.plugin.KotlinJsPluginWrapper
|
||||
Reference in New Issue
Block a user