Fix 'kotlin-spring' and 'kotlin-noarg' Gradle plugin importing (KT-17049)
Allopen and Noarg plugins now use 'presets' that should be handled in the Gradle importer as well.
This commit is contained in:
committed by
Yan Zhulanow
parent
9fa16364e1
commit
21da11fe18
+3
-1
@@ -42,6 +42,7 @@ class AllOpenGradleSubplugin : Plugin<Project> {
|
||||
|
||||
project.afterEvaluate {
|
||||
val fqNamesAsString = allOpenExtension.myAnnotations.joinToString(",")
|
||||
val presetsAsString = allOpenExtension.myPresets.joinToString(",")
|
||||
project.extensions.extraProperties.set("kotlinAllOpenAnnotations", fqNamesAsString)
|
||||
|
||||
val allBuildscriptArtifacts = project.getBuildscriptArtifacts() + project.rootProject.getBuildscriptArtifacts()
|
||||
@@ -54,7 +55,8 @@ class AllOpenGradleSubplugin : Plugin<Project> {
|
||||
open class TaskForAllOpen : AbstractTask()
|
||||
project.tasks.add(project.tasks.create("allOpenDataStorageTask", TaskForAllOpen::class.java).apply {
|
||||
isEnabled = false
|
||||
description = "Supported annotations: " + fqNamesAsString +
|
||||
description = "Supported annotations: $fqNamesAsString" +
|
||||
"; Presets: $presetsAsString" +
|
||||
"; Compiler plugin classpath: $allOpenCompilerPluginFile"
|
||||
})
|
||||
}
|
||||
|
||||
+2
@@ -43,6 +43,7 @@ class NoArgGradleSubplugin : Plugin<Project> {
|
||||
|
||||
project.afterEvaluate {
|
||||
val fqNamesAsString = noArgExtension.myAnnotations.joinToString(",")
|
||||
val presetsAsString = noArgExtension.myPresets.joinToString(",")
|
||||
project.extensions.extraProperties.set("kotlinNoArgAnnotations", fqNamesAsString)
|
||||
|
||||
val allBuildscriptArtifacts = project.getBuildscriptArtifacts() + project.rootProject.getBuildscriptArtifacts()
|
||||
@@ -56,6 +57,7 @@ class NoArgGradleSubplugin : Plugin<Project> {
|
||||
project.tasks.add(project.tasks.create("noArgDataStorageTask", TaskForNoArg::class.java).apply {
|
||||
isEnabled = false
|
||||
description = "Supported annotations: " + fqNamesAsString +
|
||||
"; Presets: $presetsAsString" +
|
||||
"; Compiler plugin classpath: $noArgCompilerPluginFile"
|
||||
})
|
||||
}
|
||||
|
||||
@@ -26,4 +26,14 @@ class AllOpenGradleProjectImportHandler : AbstractGradleImportHandler() {
|
||||
override val annotationOptionName = AllOpenCommandLineProcessor.ANNOTATION_OPTION.name
|
||||
override val dataStorageTaskName = "allOpenDataStorageTask"
|
||||
override val pluginJarFileFromIdea = PathUtil.getKotlinPathsForIdeaPlugin().allOpenPluginJarPath
|
||||
|
||||
override fun getAnnotationsForPreset(presetName: String): List<String> {
|
||||
for ((name, annotations) in AllOpenCommandLineProcessor.SUPPORTED_PRESETS.entries) {
|
||||
if (presetName == name) {
|
||||
return annotations
|
||||
}
|
||||
}
|
||||
|
||||
return super.getAnnotationsForPreset(presetName)
|
||||
}
|
||||
}
|
||||
+6
-4
@@ -28,7 +28,7 @@ import java.io.File
|
||||
|
||||
abstract class AbstractGradleImportHandler : GradleProjectImportHandler {
|
||||
private companion object {
|
||||
private val TASK_DESCRIPTION_REGEX = "Supported annotations: (.*?); Compiler plugin classpath: (.*)".toRegex()
|
||||
private val TASK_DESCRIPTION_REGEX = "Supported annotations: ([^; ]*); (?:Presets: (.*?); )?Compiler plugin classpath: (.*?)".toRegex()
|
||||
}
|
||||
|
||||
abstract val compilerPluginId: String
|
||||
@@ -51,6 +51,8 @@ abstract class AbstractGradleImportHandler : GradleProjectImportHandler {
|
||||
annotationOptionName = annotationOptionName)
|
||||
}
|
||||
|
||||
protected open fun getAnnotationsForPreset(presetName: String): List<String> = emptyList()
|
||||
|
||||
private fun getPluginSetupByModule(
|
||||
moduleNode: DataNode<ModuleData>
|
||||
): AnnotationBasedCompilerPluginSetup? {
|
||||
@@ -60,10 +62,10 @@ abstract class AbstractGradleImportHandler : GradleProjectImportHandler {
|
||||
}?.data as? TaskData ?: return null
|
||||
|
||||
val dataStorageTaskDescription = dataStorageTaskData.description ?: return null
|
||||
val (annotationFqNamesList, _) = TASK_DESCRIPTION_REGEX.matchEntire(
|
||||
dataStorageTaskDescription)?.groupValues?.drop(1) ?: return null
|
||||
val matchResult = TASK_DESCRIPTION_REGEX.matchEntire(dataStorageTaskDescription)?.groupValues?.drop(1) ?: return null
|
||||
val (annotationFqNamesList, presets) = matchResult
|
||||
|
||||
val annotationFqNames = annotationFqNamesList.split(',')
|
||||
val annotationFqNames = annotationFqNamesList.split(',') + presets.split(',').flatMap { getAnnotationsForPreset(it) }
|
||||
|
||||
// For now we can't use plugins from Gradle cause they're shaded and may have an incompatible version.
|
||||
// So we use ones from the IDEA plugin.
|
||||
|
||||
@@ -26,4 +26,14 @@ class NoArgGradleProjectImportHandler : AbstractGradleImportHandler() {
|
||||
override val annotationOptionName = NoArgCommandLineProcessor.ANNOTATION_OPTION.name
|
||||
override val dataStorageTaskName = "noArgDataStorageTask"
|
||||
override val pluginJarFileFromIdea = PathUtil.getKotlinPathsForIdeaPlugin().noArgPluginJarPath
|
||||
|
||||
override fun getAnnotationsForPreset(presetName: String): List<String> {
|
||||
for ((name, annotations) in NoArgCommandLineProcessor.SUPPORTED_PRESETS.entries) {
|
||||
if (presetName == name) {
|
||||
return annotations
|
||||
}
|
||||
}
|
||||
|
||||
return super.getAnnotationsForPreset(presetName)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user