From 98fc4ab2e1e8d93d59d2c55807fb47f1dfb10162 Mon Sep 17 00:00:00 2001 From: Sergey Igushkin Date: Sat, 6 Jun 2020 00:26:10 +0300 Subject: [PATCH] Rework NoArgSubplugin for the new subplugins API --- .../kotlin/noarg/gradle/NoArgSubplugin.kt | 65 ++++++++----------- ...kotlin.gradle.plugin.KotlinGradleSubplugin | 1 - 2 files changed, 28 insertions(+), 38 deletions(-) delete mode 100644 libraries/tools/kotlin-noarg/src/main/resources/META-INF/services/org.jetbrains.kotlin.gradle.plugin.KotlinGradleSubplugin diff --git a/libraries/tools/kotlin-noarg/src/main/kotlin/org/jetbrains/kotlin/noarg/gradle/NoArgSubplugin.kt b/libraries/tools/kotlin-noarg/src/main/kotlin/org/jetbrains/kotlin/noarg/gradle/NoArgSubplugin.kt index 0066cccb8e6..05ec762cc2a 100644 --- a/libraries/tools/kotlin-noarg/src/main/kotlin/org/jetbrains/kotlin/noarg/gradle/NoArgSubplugin.kt +++ b/libraries/tools/kotlin-noarg/src/main/kotlin/org/jetbrains/kotlin/noarg/gradle/NoArgSubplugin.kt @@ -16,67 +16,58 @@ package org.jetbrains.kotlin.noarg.gradle -import org.gradle.api.Plugin import org.gradle.api.Project -import org.gradle.api.tasks.compile.AbstractCompile +import org.gradle.api.provider.Provider import org.gradle.tooling.provider.model.ToolingModelBuilderRegistry import org.jetbrains.kotlin.gradle.plugin.* import org.jetbrains.kotlin.noarg.gradle.model.builder.NoArgModelBuilder import javax.inject.Inject -class NoArgGradleSubplugin @Inject internal constructor(private val registry: ToolingModelBuilderRegistry) : Plugin { - companion object { - fun isEnabled(project: Project) = project.plugins.findPlugin(NoArgGradleSubplugin::class.java) != null +class NoArgGradleSubplugin @Inject internal constructor(private val registry: ToolingModelBuilderRegistry) : + KotlinCompilerPluginSupportPlugin { + companion object { fun getNoArgExtension(project: Project): NoArgExtension { return project.extensions.getByType(NoArgExtension::class.java) } + + private const val NOARG_ARTIFACT_NAME = "kotlin-noarg" + + private const val ANNOTATION_ARG_NAME = "annotation" + private const val PRESET_ARG_NAME = "preset" + private const val INVOKE_INITIALIZERS_ARG_NAME = "invokeInitializers" } override fun apply(project: Project) { project.extensions.create("noArg", NoArgExtension::class.java) registry.register(NoArgModelBuilder()) } -} -class NoArgKotlinGradleSubplugin : KotlinGradleSubplugin { - companion object { - const val NOARG_ARTIFACT_NAME = "kotlin-noarg" + override fun isApplicable(kotlinCompilation: KotlinCompilation<*>): Boolean = true - private val ANNOTATION_ARG_NAME = "annotation" - private val PRESET_ARG_NAME = "preset" - private val INVOKE_INITIALIZERS_ARG_NAME = "invokeInitializers" - } + override fun applyToCompilation( + kotlinCompilation: KotlinCompilation<*> + ): Provider> { + val project = kotlinCompilation.target.project - override fun isApplicable(project: Project, task: AbstractCompile) = NoArgGradleSubplugin.isEnabled(project) + return project.provider { + val noArgExtension = project.extensions.getByType(NoArgExtension::class.java) + val options = mutableListOf() - override fun apply( - project: Project, - kotlinCompile: AbstractCompile, - javaCompile: AbstractCompile?, - variantData: Any?, - androidProjectHandler: Any?, - kotlinCompilation: KotlinCompilation<*>? - ): List { - if (!NoArgGradleSubplugin.isEnabled(project)) return emptyList() + for (anno in noArgExtension.myAnnotations) { + options += SubpluginOption(ANNOTATION_ARG_NAME, anno) + } - val noArgExtension = project.extensions.findByType(NoArgExtension::class.java) ?: return emptyList() + for (preset in noArgExtension.myPresets) { + options += SubpluginOption(PRESET_ARG_NAME, preset) + } - val options = mutableListOf() + if (noArgExtension.invokeInitializers) { + options += SubpluginOption(INVOKE_INITIALIZERS_ARG_NAME, "true") + } - for (anno in noArgExtension.myAnnotations) { - options += SubpluginOption(ANNOTATION_ARG_NAME, anno) + options } - - for (preset in noArgExtension.myPresets) { - options += SubpluginOption(PRESET_ARG_NAME, preset) - } - - if (noArgExtension.invokeInitializers) { - options += SubpluginOption(INVOKE_INITIALIZERS_ARG_NAME, "true") - } - - return options } override fun getCompilerPluginId() = "org.jetbrains.kotlin.noarg" diff --git a/libraries/tools/kotlin-noarg/src/main/resources/META-INF/services/org.jetbrains.kotlin.gradle.plugin.KotlinGradleSubplugin b/libraries/tools/kotlin-noarg/src/main/resources/META-INF/services/org.jetbrains.kotlin.gradle.plugin.KotlinGradleSubplugin deleted file mode 100644 index 83e1aa6f349..00000000000 --- a/libraries/tools/kotlin-noarg/src/main/resources/META-INF/services/org.jetbrains.kotlin.gradle.plugin.KotlinGradleSubplugin +++ /dev/null @@ -1 +0,0 @@ -org.jetbrains.kotlin.noarg.gradle.NoArgKotlinGradleSubplugin \ No newline at end of file