From a6b55cc5d71a05e09c4e838eacaa51a824fbe526 Mon Sep 17 00:00:00 2001 From: Sergey Igushkin Date: Tue, 25 Dec 2018 16:12:57 +0300 Subject: [PATCH] refactor: Support creating AndroidProjectHandler from outside the plugin --- .../kotlin/gradle/plugin/KotlinPlugin.kt | 30 +++++++++---------- .../gradle/plugin/mpp/kotlinTargetPresets.kt | 7 +---- 2 files changed, 16 insertions(+), 21 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPlugin.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPlugin.kt index ce51f69f934..a0a9814bfb2 100755 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPlugin.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPlugin.kt @@ -598,22 +598,16 @@ internal open class KotlinAndroidPlugin( override fun apply(project: Project) { val androidTarget = KotlinAndroidTarget("", project) - val tasksProvider = AndroidTasksProvider(androidTarget.targetName) - - applyToTarget( - project, androidTarget, tasksProvider, - kotlinPluginVersion - ) + applyToTarget(kotlinPluginVersion, androidTarget) registry.register(KotlinModelBuilder(kotlinPluginVersion, androidTarget)) } companion object { - fun applyToTarget( - project: Project, - kotlinTarget: KotlinAndroidTarget, - tasksProvider: KotlinTasksProvider, - kotlinPluginVersion: String - ) { + fun androidTargetHandler( + kotlinPluginVersion: String, + androidTarget: KotlinAndroidTarget + ): AbstractAndroidProjectHandler<*> { + val tasksProvider = AndroidTasksProvider(androidTarget.targetName) val version = loadAndroidPluginVersion() if (version != null) { @@ -630,7 +624,7 @@ internal open class KotlinAndroidPlugin( val legacyVersionThreshold = "2.5.0" - val variantProcessor = if (compareVersionNumbers(version, legacyVersionThreshold) < 0) { + return if (compareVersionNumbers(version, legacyVersionThreshold) < 0) { LegacyAndroidAndroidProjectHandler(kotlinTools) } else { val android25ProjectHandlerClass = Class.forName("org.jetbrains.kotlin.gradle.plugin.Android25ProjectHandler") @@ -639,8 +633,13 @@ internal open class KotlinAndroidPlugin( } ctor.newInstance(kotlinTools) as AbstractAndroidProjectHandler<*> } + } - variantProcessor.handleProject(project, kotlinTarget) + fun applyToTarget( + kotlinPluginVersion: String, + kotlinTarget: KotlinAndroidTarget + ) { + androidTargetHandler(kotlinPluginVersion, kotlinTarget).configureTarget(kotlinTarget) } } } @@ -682,7 +681,8 @@ abstract class AbstractAndroidProjectHandler(private val kotlinConfigurationT protected abstract fun wrapVariantDataForKapt(variantData: V): KaptVariantData - fun handleProject(project: Project, kotlinAndroidTarget: KotlinAndroidTarget) { + fun configureTarget(kotlinAndroidTarget: KotlinAndroidTarget) { + val project = kotlinAndroidTarget.project val ext = project.extensions.getByName("android") as BaseExtension ext.sourceSets.all { sourceSet -> diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/kotlinTargetPresets.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/kotlinTargetPresets.kt index 1a0e749ba4a..58157efb262 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/kotlinTargetPresets.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/kotlinTargetPresets.kt @@ -22,7 +22,6 @@ import org.jetbrains.kotlin.gradle.dsl.KotlinJvmOptions import org.jetbrains.kotlin.gradle.dsl.kotlinExtension import org.jetbrains.kotlin.gradle.plugin.* import org.jetbrains.kotlin.gradle.plugin.sources.applyLanguageSettingsToKotlinTask -import org.jetbrains.kotlin.gradle.tasks.AndroidTasksProvider import org.jetbrains.kotlin.gradle.tasks.KotlinTasksProvider import org.jetbrains.kotlin.gradle.utils.NativeCompilerDownloader import org.jetbrains.kotlin.gradle.utils.isGradleVersionAtLeast @@ -185,11 +184,7 @@ class KotlinAndroidTargetPreset( preset = this@KotlinAndroidTargetPreset } - KotlinAndroidPlugin.applyToTarget( - project, result, AndroidTasksProvider(name), - kotlinPluginVersion - ) - + KotlinAndroidPlugin.applyToTarget(kotlinPluginVersion, result) return result }