diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPluginWrapper.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPluginWrapper.kt index 546c62a1cfe..41faa16f6ed 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPluginWrapper.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPluginWrapper.kt @@ -263,6 +263,8 @@ abstract class KotlinBasePluginWrapper : DefaultKotlinBasePlugin() { plugin.apply(project) + project.runKotlinProjectSetupActions() + project.addNpmDependencyExtension() project.registerBuildKotlinToolingMetadataTask() diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinProjectSetupAction.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinProjectSetupAction.kt new file mode 100644 index 00000000000..2aaae8a481c --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinProjectSetupAction.kt @@ -0,0 +1,21 @@ +package org.jetbrains.kotlin.gradle.plugin + +import org.gradle.api.Project + +/** + * Generic action to configure/set up a Kotlin Gradle Project. + * Will be invoked after the KotlinPluginWrapper applied the underlying Kotlin Gradle Plugin + */ +internal fun interface KotlinProjectSetupAction { + fun Project.invoke() + + companion object { + val extensionPoint = KotlinGradlePluginExtensionPoint() + } +} + +internal fun Project.runKotlinProjectSetupActions() { + KotlinProjectSetupAction.extensionPoint[this].forEach { action -> + with(action) { invoke() } + } +} 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 08e4c10d3fd..112613b0f1c 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 @@ -31,6 +31,10 @@ import org.jetbrains.kotlin.gradle.plugin.diagnostics.checkers.WasmSourceSetsNot * Active Extensions (using the [KotlinGradlePluginExtensionPoint] infrastructure) will be registered here by the Kotlin Gradle Plugin. */ internal fun Project.registerKotlinPluginExtensions() { + + KotlinProjectSetupAction.extensionPoint.apply { + } + KotlinGradleProjectChecker.extensionPoint.apply { register(project, CommonMainOrTestWithDependsOnChecker) register(project, DeprecatedKotlinNativeTargetsChecker)