From 58385ef64ffd3f512c1c67f022c7a6c4e3116996 Mon Sep 17 00:00:00 2001 From: Sebastian Sellmair Date: Mon, 16 Oct 2023 18:51:02 +0200 Subject: [PATCH] [Gradle] Implement ScriptingGradleSubpluginSetupAction KT-61634 --- .../jetbrains/kotlin/gradle/plugin/KotlinJvmPlugin.kt | 2 -- .../gradle/plugin/mpp/KotlinMultiplatformPlugin.kt | 2 -- .../gradle/plugin/registerKotlinPluginExtensions.kt | 11 ++++++++++- .../scripting/internal/ScriptingGradleSubplugin.kt | 5 +++++ 4 files changed, 15 insertions(+), 5 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinJvmPlugin.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinJvmPlugin.kt index 8951fcebbdd..cf2995a9ee0 100755 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinJvmPlugin.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinJvmPlugin.kt @@ -80,8 +80,6 @@ internal open class KotlinJvmPlugin( kotlinExtension.compilerOptions, target.compilerOptions ) - - project.pluginManager.apply(ScriptingGradleSubplugin::class.java) } override fun configureClassInspectionForIC(project: Project) { diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/KotlinMultiplatformPlugin.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/KotlinMultiplatformPlugin.kt index b48f498d96e..69a0ae56b3f 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/KotlinMultiplatformPlugin.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/KotlinMultiplatformPlugin.kt @@ -62,8 +62,6 @@ class KotlinMultiplatformPlugin : Plugin { // propagate compiler plugin options to the source set language settings setupAdditionalCompilerArguments(project) project.setupGeneralKotlinExtensionParameters() - - project.pluginManager.apply(ScriptingGradleSubplugin::class.java) } diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/registerKotlinPluginExtensions.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/registerKotlinPluginExtensions.kt index 6590dd0424b..0a103befedd 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/registerKotlinPluginExtensions.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/registerKotlinPluginExtensions.kt @@ -6,6 +6,7 @@ package org.jetbrains.kotlin.gradle.plugin import org.gradle.api.Project +import org.jetbrains.kotlin.gradle.dsl.* import org.jetbrains.kotlin.gradle.dsl.AndroidMainSourceSetConventionsChecker import org.jetbrains.kotlin.gradle.dsl.IosSourceSetConventionChecker import org.jetbrains.kotlin.gradle.dsl.PlatformSourceSetConventionsChecker @@ -32,6 +33,8 @@ import org.jetbrains.kotlin.gradle.plugin.ide.IdeMultiplatformImportSetupAction import org.jetbrains.kotlin.gradle.plugin.ide.IdeResolveDependenciesTaskSetupAction import org.jetbrains.kotlin.gradle.plugin.mpp.GlobalProjectStructureMetadataStorageSetupAction import org.jetbrains.kotlin.gradle.plugin.mpp.apple.AddBuildListenerForXCodeSetupAction +import org.jetbrains.kotlin.gradle.scripting.internal.ScriptingGradleSubplugin +import org.jetbrains.kotlin.gradle.scripting.internal.ScriptingGradleSubpluginSetupAction import org.jetbrains.kotlin.gradle.targets.js.npm.AddNpmDependencyExtensionProjectSetupAction import org.jetbrains.kotlin.gradle.targets.native.CreateFatFrameworksSetupAction import org.jetbrains.kotlin.gradle.targets.native.internal.CInteropCommonizedCInteropApiElementsConfigurationsSetupAction @@ -46,6 +49,10 @@ internal fun Project.registerKotlinPluginExtensions() { register(project, RegisterBuildKotlinToolingMetadataTask) register(project, KotlinToolingDiagnosticsSetupAction) + if (isJvm || isMultiplatform) { + register(project, ScriptingGradleSubpluginSetupAction) + } + if (isMultiplatform) { register(project, GlobalProjectStructureMetadataStorageSetupAction) register(project, IdeMultiplatformImportSetupAction) @@ -85,4 +92,6 @@ internal fun Project.registerKotlinPluginExtensions() { /* Helper functions to make configuration code above easier to read */ -private val Project.isMultiplatform get() = multiplatformExtensionOrNull != null \ No newline at end of file +private val Project.isMultiplatform get() = multiplatformExtensionOrNull != null + +private val Project.isJvm get() = kotlinJvmExtensionOrNull != null \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/scripting/internal/ScriptingGradleSubplugin.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/scripting/internal/ScriptingGradleSubplugin.kt index 4864d55540e..44507a65f58 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/scripting/internal/ScriptingGradleSubplugin.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/scripting/internal/ScriptingGradleSubplugin.kt @@ -35,6 +35,7 @@ import org.jetbrains.kotlin.util.capitalizeDecapitalize.capitalizeAsciiOnly private const val SCRIPTING_LOG_PREFIX = "kotlin scripting plugin:" + class ScriptingGradleSubplugin : Plugin { companion object { const val MISCONFIGURATION_MESSAGE_SUFFIX = "the plugin is probably applied by a mistake" @@ -89,6 +90,10 @@ class ScriptingGradleSubplugin : Plugin { } } +internal val ScriptingGradleSubpluginSetupAction = KotlinProjectSetupAction { + project.pluginManager.apply(ScriptingGradleSubplugin::class.java) +} + private const val MAIN_CONFIGURATION_NAME = "kotlinScriptDef" private const val RESULTS_CONFIGURATION_SUFFIX = "Extensions"