[Gradle, JS] Activate legacy plugin and new plugin via gradle property
This commit is contained in:
+26
-4
@@ -77,6 +77,8 @@ abstract class KotlinBasePluginWrapper(
|
|||||||
|
|
||||||
kotlinGradleBuildServices.detectKotlinPluginLoadedInMultipleProjects(project, kotlinPluginVersion)
|
kotlinGradleBuildServices.detectKotlinPluginLoadedInMultipleProjects(project, kotlinPluginVersion)
|
||||||
|
|
||||||
|
defineExtension(project)
|
||||||
|
|
||||||
project.createKotlinExtension(projectExtensionClass).apply {
|
project.createKotlinExtension(projectExtensionClass).apply {
|
||||||
fun kotlinSourceSetContainer(factory: NamedDomainObjectFactory<KotlinSourceSet>) =
|
fun kotlinSourceSetContainer(factory: NamedDomainObjectFactory<KotlinSourceSet>) =
|
||||||
project.container(KotlinSourceSet::class.java, factory)
|
project.container(KotlinSourceSet::class.java, factory)
|
||||||
@@ -107,6 +109,9 @@ abstract class KotlinBasePluginWrapper(
|
|||||||
project: Project,
|
project: Project,
|
||||||
kotlinGradleBuildServices: KotlinGradleBuildServices
|
kotlinGradleBuildServices: KotlinGradleBuildServices
|
||||||
): Plugin<Project>
|
): Plugin<Project>
|
||||||
|
|
||||||
|
protected open fun defineExtension(project: Project) {
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
open class KotlinPluginWrapper @Inject constructor(
|
open class KotlinPluginWrapper @Inject constructor(
|
||||||
@@ -156,11 +161,28 @@ open class Kotlin2JsPluginWrapper @Inject constructor(
|
|||||||
open class KotlinJsPluginWrapper @Inject constructor(
|
open class KotlinJsPluginWrapper @Inject constructor(
|
||||||
fileResolver: FileResolver
|
fileResolver: FileResolver
|
||||||
) : KotlinBasePluginWrapper(fileResolver) {
|
) : KotlinBasePluginWrapper(fileResolver) {
|
||||||
override fun getPlugin(project: Project, kotlinGradleBuildServices: KotlinGradleBuildServices): Plugin<Project> =
|
override fun getPlugin(project: Project, kotlinGradleBuildServices: KotlinGradleBuildServices): Plugin<Project> {
|
||||||
KotlinJsPlugin(kotlinPluginVersion)
|
val propertiesProvider = PropertiesProvider(project)
|
||||||
|
|
||||||
override val projectExtensionClass: KClass<out KotlinJsProjectExtension>
|
return when (propertiesProvider.jsMode) {
|
||||||
get() = KotlinJsProjectExtension::class
|
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")
|
override fun createTestRegistry(project: Project) = KotlinTestsRegistry(project, "test")
|
||||||
}
|
}
|
||||||
|
|||||||
+17
@@ -168,6 +168,12 @@ internal class PropertiesProvider private constructor(private val project: Proje
|
|||||||
val jsDiscoverTypes: Boolean?
|
val jsDiscoverTypes: Boolean?
|
||||||
get() = booleanProperty("kotlin.js.experimental.discoverTypes")
|
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? {
|
private fun propertyWithDeprecatedVariant(propName: String, deprecatedPropName: String): String? {
|
||||||
val deprecatedProperty = property(deprecatedPropName)
|
val deprecatedProperty = property(deprecatedPropName)
|
||||||
if (deprecatedProperty != null) {
|
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
@@ -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