From 19ac036ec594748aecb1731db439516a0e41af80 Mon Sep 17 00:00:00 2001 From: Sergey Igushkin Date: Sat, 6 Jun 2020 00:34:29 +0300 Subject: [PATCH] Rework ScriptingGradleSubplugin for the new subplugins API --- .../internal/ScriptingGradleSubplugin.kt | 56 +++++++++---------- ...kotlin.gradle.plugin.KotlinGradleSubplugin | 1 - 2 files changed, 25 insertions(+), 32 deletions(-) delete mode 100644 libraries/tools/kotlin-gradle-plugin/src/main/resources/META-INF/services/org.jetbrains.kotlin.gradle.plugin.KotlinGradleSubplugin diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/scripting/internal/ScriptingGradleSubplugin.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/scripting/internal/ScriptingGradleSubplugin.kt index 12c71db7743..1666a206e68 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/scripting/internal/ScriptingGradleSubplugin.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/scripting/internal/ScriptingGradleSubplugin.kt @@ -13,10 +13,9 @@ import org.gradle.api.artifacts.Configuration import org.gradle.api.artifacts.transform.ArtifactTransform import org.gradle.api.attributes.Attribute import org.gradle.api.plugins.JavaPluginConvention -import org.gradle.api.tasks.compile.AbstractCompile +import org.gradle.api.provider.Provider import org.jetbrains.kotlin.cli.common.messages.MessageRenderer import org.jetbrains.kotlin.cli.common.messages.PrintingMessageCollector -import org.jetbrains.kotlin.gradle.dsl.KotlinJvmCompile import org.jetbrains.kotlin.gradle.dsl.multiplatformExtensionOrNull import org.jetbrains.kotlin.gradle.internal.KaptGenerateStubsTask import org.jetbrains.kotlin.gradle.plugin.* @@ -33,8 +32,6 @@ class ScriptingGradleSubplugin : Plugin { companion object { const val MISCONFIGURATION_MESSAGE_SUFFIX = "the plugin is probably applied by a mistake" - fun isEnabled(project: Project) = project.plugins.findPlugin(ScriptingGradleSubplugin::class.java) != null - fun configureForSourceSet(project: Project, sourceSetName: String) { val discoveryConfiguration = project.configurations.maybeCreate(getDiscoveryClasspathConfigurationName(sourceSetName)).apply { isVisible = false @@ -48,8 +45,9 @@ class ScriptingGradleSubplugin : Plugin { } override fun apply(project: Project) { - project.afterEvaluate { + project.plugins.apply(ScriptingKotlinGradleSubplugin::class.java) + project.afterEvaluate { val javaPluginConvention = project.convention.findPlugin(JavaPluginConvention::class.java) if (javaPluginConvention?.sourceSets?.isEmpty() == false) { @@ -209,7 +207,7 @@ fun Configuration.discoverScriptExtensionsFiles() = }.artifacts.artifactFiles -class ScriptingKotlinGradleSubplugin : KotlinGradleSubplugin { +class ScriptingKotlinGradleSubplugin : KotlinCompilerPluginSupportPlugin { companion object { const val SCRIPTING_ARTIFACT_NAME = "kotlin-scripting-compiler-embeddable" @@ -219,38 +217,34 @@ class ScriptingKotlinGradleSubplugin : KotlinGradleSubplugin { val LEGACY_SCRIPT_RESOLVER_ENVIRONMENT_OPTION = "script-resolver-environment" } - override fun isApplicable(project: Project, task: AbstractCompile) = - task is KotlinJvmCompile && ScriptingGradleSubplugin.isEnabled(project) + override fun isApplicable(kotlinCompilation: KotlinCompilation<*>): Boolean = true - override fun apply( - project: Project, - kotlinCompile: AbstractCompile, - javaCompile: AbstractCompile?, - variantData: Any?, - androidProjectHandler: Any?, - kotlinCompilation: KotlinCompilation<*>? - ): List { - if (!ScriptingGradleSubplugin.isEnabled(project)) return emptyList() + override fun applyToCompilation( + kotlinCompilation: KotlinCompilation<*> + ): Provider> { + val project = kotlinCompilation.target.project val scriptingExtension = project.extensions.findByType(ScriptingExtension::class.java) ?: project.extensions.create("kotlinScripting", ScriptingExtension::class.java) - val options = mutableListOf() + return project.provider { + val options = mutableListOf() - for (scriptDef in scriptingExtension.myScriptDefinitions) { - options += SubpluginOption(SCRIPT_DEFINITIONS_OPTION, scriptDef) - } - for (path in scriptingExtension.myScriptDefinitionsClasspath) { - options += SubpluginOption(SCRIPT_DEFINITIONS_CLASSPATH_OPTION, path) - } - if (scriptingExtension.myDisableScriptDefinitionsFromClasspath) { - options += SubpluginOption(DISABLE_SCRIPT_DEFINITIONS_FROM_CLSSPATH_OPTION, "true") - } - for (pair in scriptingExtension.myScriptResolverEnvironment) { - options += SubpluginOption(LEGACY_SCRIPT_RESOLVER_ENVIRONMENT_OPTION, "${pair.key}=${pair.value}") - } + for (scriptDef in scriptingExtension.myScriptDefinitions) { + options += SubpluginOption(SCRIPT_DEFINITIONS_OPTION, scriptDef) + } + for (path in scriptingExtension.myScriptDefinitionsClasspath) { + options += SubpluginOption(SCRIPT_DEFINITIONS_CLASSPATH_OPTION, path) + } + if (scriptingExtension.myDisableScriptDefinitionsFromClasspath) { + options += SubpluginOption(DISABLE_SCRIPT_DEFINITIONS_FROM_CLSSPATH_OPTION, "true") + } + for (pair in scriptingExtension.myScriptResolverEnvironment) { + options += SubpluginOption(LEGACY_SCRIPT_RESOLVER_ENVIRONMENT_OPTION, "${pair.key}=${pair.value}") + } - return options + options + } } override fun getCompilerPluginId() = "kotlin.scripting" diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/resources/META-INF/services/org.jetbrains.kotlin.gradle.plugin.KotlinGradleSubplugin b/libraries/tools/kotlin-gradle-plugin/src/main/resources/META-INF/services/org.jetbrains.kotlin.gradle.plugin.KotlinGradleSubplugin deleted file mode 100644 index 1a1483a53d6..00000000000 --- a/libraries/tools/kotlin-gradle-plugin/src/main/resources/META-INF/services/org.jetbrains.kotlin.gradle.plugin.KotlinGradleSubplugin +++ /dev/null @@ -1 +0,0 @@ -org.jetbrains.kotlin.gradle.scripting.internal.ScriptingKotlinGradleSubplugin \ No newline at end of file