gradle.kts importing: move code to dedicated package
This commit is contained in:
+15
-13
@@ -3,7 +3,7 @@
|
|||||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package org.jetbrains.kotlin.idea.configuration
|
package org.jetbrains.kotlin.idea.scripting.gradle.importing
|
||||||
|
|
||||||
import com.intellij.openapi.externalSystem.model.DataNode
|
import com.intellij.openapi.externalSystem.model.DataNode
|
||||||
import com.intellij.openapi.externalSystem.model.project.ProjectData
|
import com.intellij.openapi.externalSystem.model.project.ProjectData
|
||||||
@@ -12,16 +12,15 @@ import org.gradle.tooling.model.kotlin.dsl.EditorReportSeverity
|
|||||||
import org.gradle.tooling.model.kotlin.dsl.KotlinDslScriptsModel
|
import org.gradle.tooling.model.kotlin.dsl.KotlinDslScriptsModel
|
||||||
import org.jetbrains.kotlin.idea.util.NotNullableCopyableDataNodeUserDataProperty
|
import org.jetbrains.kotlin.idea.util.NotNullableCopyableDataNodeUserDataProperty
|
||||||
|
|
||||||
|
var DataNode<out ProjectData>.KOTLIN_DSL_SCRIPT_IDEA_MODELS: MutableList<KotlinDslScriptIdeaModel>
|
||||||
var DataNode<out ProjectData>.gradleKotlinBuildScripts
|
|
||||||
by NotNullableCopyableDataNodeUserDataProperty(
|
by NotNullableCopyableDataNodeUserDataProperty(
|
||||||
Key.create<MutableList<GradleKotlinBuildScriptData>>(
|
Key.create<MutableList<KotlinDslScriptIdeaModel>>(
|
||||||
"GRADLE_KOTLIN_BUILD_SCRIPTS"
|
"GRADLE_KOTLIN_BUILD_SCRIPTS"
|
||||||
),
|
),
|
||||||
mutableListOf()
|
mutableListOf()
|
||||||
)
|
)
|
||||||
|
|
||||||
data class GradleKotlinBuildScriptData(
|
data class KotlinDslScriptIdeaModel(
|
||||||
val file: String,
|
val file: String,
|
||||||
val classPath: List<String>,
|
val classPath: List<String>,
|
||||||
val sourcePath: List<String>,
|
val sourcePath: List<String>,
|
||||||
@@ -40,30 +39,33 @@ data class GradleKotlinBuildScriptData(
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Suppress("unused")
|
@Suppress("unused")
|
||||||
fun KotlinGradleBuildScriptsResolver.copy(model: KotlinDslScriptsModel): List<GradleKotlinBuildScriptData> {
|
fun KotlinDslScriptModelResolver.copy(model: KotlinDslScriptsModel): List<KotlinDslScriptIdeaModel> {
|
||||||
return model.scriptModels.map { (file, model) ->
|
return model.scriptModels.map { (file, model) ->
|
||||||
val messages = mutableListOf<GradleKotlinBuildScriptData.Message>()
|
val messages = mutableListOf<KotlinDslScriptIdeaModel.Message>()
|
||||||
|
|
||||||
model.exceptions.forEach {
|
model.exceptions.forEach {
|
||||||
messages.add(
|
messages.add(
|
||||||
GradleKotlinBuildScriptData.Message(GradleKotlinBuildScriptData.Severity.ERROR, it)
|
KotlinDslScriptIdeaModel.Message(
|
||||||
|
KotlinDslScriptIdeaModel.Severity.ERROR, it
|
||||||
|
)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
model.editorReports.forEach {
|
model.editorReports.forEach {
|
||||||
messages.add(GradleKotlinBuildScriptData.Message(
|
messages.add(KotlinDslScriptIdeaModel.Message(
|
||||||
when (it.severity) {
|
when (it.severity) {
|
||||||
EditorReportSeverity.WARNING -> GradleKotlinBuildScriptData.Severity.WARNING
|
EditorReportSeverity.WARNING -> KotlinDslScriptIdeaModel.Severity.WARNING
|
||||||
else -> GradleKotlinBuildScriptData.Severity.ERROR
|
else -> KotlinDslScriptIdeaModel.Severity.ERROR
|
||||||
},
|
},
|
||||||
it.message,
|
it.message,
|
||||||
it.position?.let { position ->
|
it.position?.let { position ->
|
||||||
GradleKotlinBuildScriptData.Position(position.line, position.column)
|
KotlinDslScriptIdeaModel
|
||||||
|
.Position(position.line, position.column)
|
||||||
}
|
}
|
||||||
))
|
))
|
||||||
}
|
}
|
||||||
|
|
||||||
GradleKotlinBuildScriptData(
|
KotlinDslScriptIdeaModel(
|
||||||
file.absolutePath,
|
file.absolutePath,
|
||||||
model.classPath.map { it.absolutePath },
|
model.classPath.map { it.absolutePath },
|
||||||
model.sourcePath.map { it.absolutePath },
|
model.sourcePath.map { it.absolutePath },
|
||||||
+13
-14
@@ -3,7 +3,7 @@
|
|||||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package org.jetbrains.kotlin.idea.configuration
|
package org.jetbrains.kotlin.idea.scripting.gradle.importing
|
||||||
|
|
||||||
import com.intellij.openapi.components.service
|
import com.intellij.openapi.components.service
|
||||||
import com.intellij.openapi.externalSystem.model.DataNode
|
import com.intellij.openapi.externalSystem.model.DataNode
|
||||||
@@ -30,8 +30,6 @@ import org.jetbrains.kotlin.scripting.definitions.findScriptDefinition
|
|||||||
import org.jetbrains.kotlin.scripting.resolve.ScriptCompilationConfigurationWrapper
|
import org.jetbrains.kotlin.scripting.resolve.ScriptCompilationConfigurationWrapper
|
||||||
import org.jetbrains.kotlin.scripting.resolve.VirtualFileScriptSource
|
import org.jetbrains.kotlin.scripting.resolve.VirtualFileScriptSource
|
||||||
import org.jetbrains.kotlin.scripting.resolve.adjustByDefinition
|
import org.jetbrains.kotlin.scripting.resolve.adjustByDefinition
|
||||||
import org.jetbrains.kotlin.utils.addToStdlib.firstNotNullResult
|
|
||||||
import org.jetbrains.plugins.gradle.model.data.GradleSourceSetData
|
|
||||||
import org.jetbrains.plugins.gradle.settings.GradleExecutionSettings
|
import org.jetbrains.plugins.gradle.settings.GradleExecutionSettings
|
||||||
import org.jetbrains.plugins.gradle.util.GradleConstants
|
import org.jetbrains.plugins.gradle.util.GradleConstants
|
||||||
import java.io.File
|
import java.io.File
|
||||||
@@ -40,7 +38,7 @@ import kotlin.script.experimental.jvm.JvmDependency
|
|||||||
import kotlin.script.experimental.jvm.jdkHome
|
import kotlin.script.experimental.jvm.jdkHome
|
||||||
import kotlin.script.experimental.jvm.jvm
|
import kotlin.script.experimental.jvm.jvm
|
||||||
|
|
||||||
class KotlinGradleBuildScriptsDataService : AbstractProjectDataService<ProjectData, Void>() {
|
class KotlinDslScriptModelDataService : AbstractProjectDataService<ProjectData, Void>() {
|
||||||
override fun getTargetDataKey(): Key<ProjectData> = ProjectKeys.PROJECT
|
override fun getTargetDataKey(): Key<ProjectData> = ProjectKeys.PROJECT
|
||||||
|
|
||||||
override fun onSuccessImport(
|
override fun onSuccessImport(
|
||||||
@@ -52,7 +50,7 @@ class KotlinGradleBuildScriptsDataService : AbstractProjectDataService<ProjectDa
|
|||||||
super.onSuccessImport(imported, projectData, project, modelsProvider)
|
super.onSuccessImport(imported, projectData, project, modelsProvider)
|
||||||
|
|
||||||
val projectDataNode = imported.singleOrNull() ?: return
|
val projectDataNode = imported.singleOrNull() ?: return
|
||||||
val gradleKotlinBuildScripts = projectDataNode.gradleKotlinBuildScripts
|
val gradleKotlinBuildScripts = projectDataNode.KOTLIN_DSL_SCRIPT_IDEA_MODELS
|
||||||
val buildScripts = gradleKotlinBuildScripts.toList()
|
val buildScripts = gradleKotlinBuildScripts.toList()
|
||||||
gradleKotlinBuildScripts.clear()
|
gradleKotlinBuildScripts.clear()
|
||||||
|
|
||||||
@@ -107,7 +105,7 @@ class KotlinGradleBuildScriptsDataService : AbstractProjectDataService<ProjectDa
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun addBuildScriptDiagnosticMessage(
|
private fun addBuildScriptDiagnosticMessage(
|
||||||
message: GradleKotlinBuildScriptData.Message,
|
message: KotlinDslScriptIdeaModel.Message,
|
||||||
virtualFile: VirtualFile,
|
virtualFile: VirtualFile,
|
||||||
project: Project
|
project: Project
|
||||||
) {
|
) {
|
||||||
@@ -115,17 +113,18 @@ class KotlinGradleBuildScriptsDataService : AbstractProjectDataService<ProjectDa
|
|||||||
"Kotlin Build Script",
|
"Kotlin Build Script",
|
||||||
message.text,
|
message.text,
|
||||||
when (message.severity) {
|
when (message.severity) {
|
||||||
GradleKotlinBuildScriptData.Severity.WARNING -> NotificationCategory.WARNING
|
KotlinDslScriptIdeaModel.Severity.WARNING -> NotificationCategory.WARNING
|
||||||
GradleKotlinBuildScriptData.Severity.ERROR -> NotificationCategory.ERROR
|
KotlinDslScriptIdeaModel.Severity.ERROR -> NotificationCategory.ERROR
|
||||||
},
|
},
|
||||||
NotificationSource.PROJECT_SYNC
|
NotificationSource.PROJECT_SYNC
|
||||||
)
|
)
|
||||||
|
|
||||||
notification.navigatable = LazyNavigatable(
|
notification.navigatable =
|
||||||
virtualFile,
|
LazyNavigatable(
|
||||||
project,
|
virtualFile,
|
||||||
message.position
|
project,
|
||||||
)
|
message.position
|
||||||
|
)
|
||||||
|
|
||||||
ExternalSystemNotificationManager.getInstance(project).showNotification(
|
ExternalSystemNotificationManager.getInstance(project).showNotification(
|
||||||
GradleConstants.SYSTEM_ID,
|
GradleConstants.SYSTEM_ID,
|
||||||
@@ -136,7 +135,7 @@ class KotlinGradleBuildScriptsDataService : AbstractProjectDataService<ProjectDa
|
|||||||
class LazyNavigatable internal constructor(
|
class LazyNavigatable internal constructor(
|
||||||
private val virtualFile: VirtualFile,
|
private val virtualFile: VirtualFile,
|
||||||
private val project: Project,
|
private val project: Project,
|
||||||
val position: GradleKotlinBuildScriptData.Position?
|
val position: KotlinDslScriptIdeaModel.Position?
|
||||||
) : Navigatable {
|
) : Navigatable {
|
||||||
private val openFileDescriptor: Navigatable by lazy {
|
private val openFileDescriptor: Navigatable by lazy {
|
||||||
if (position != null) OpenFileDescriptor(project, virtualFile, position.line, position.column)
|
if (position != null) OpenFileDescriptor(project, virtualFile, position.line, position.column)
|
||||||
+5
-5
@@ -3,7 +3,7 @@
|
|||||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package org.jetbrains.kotlin.idea.configuration
|
package org.jetbrains.kotlin.idea.scripting.gradle.importing
|
||||||
|
|
||||||
import org.gradle.tooling.BuildController
|
import org.gradle.tooling.BuildController
|
||||||
import org.gradle.tooling.model.Model
|
import org.gradle.tooling.model.Model
|
||||||
@@ -19,11 +19,11 @@ class KotlinDslScriptModelProvider : ProjectImportModelProvider {
|
|||||||
buildModel: GradleBuild,
|
buildModel: GradleBuild,
|
||||||
consumer: ProjectImportModelProvider.BuildModelConsumer
|
consumer: ProjectImportModelProvider.BuildModelConsumer
|
||||||
) {
|
) {
|
||||||
project.modules.forEach { module ->
|
buildModel.projects.forEach {
|
||||||
if (module.gradleProject.parent == null) {
|
if (it.parent == null) {
|
||||||
val model = controller.findModel(module.gradleProject, kotlinDslScriptModelClass)
|
val model = controller.findModel(it, kotlinDslScriptModelClass)
|
||||||
if (model != null) {
|
if (model != null) {
|
||||||
consumer.consume(module, model, kotlinDslScriptModelClass)
|
consumer.consumeProjectModel(it, model, kotlinDslScriptModelClass)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+3
-3
@@ -3,7 +3,7 @@
|
|||||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package org.jetbrains.kotlin.idea.configuration
|
package org.jetbrains.kotlin.idea.scripting.gradle.importing
|
||||||
|
|
||||||
import com.intellij.openapi.externalSystem.model.DataNode
|
import com.intellij.openapi.externalSystem.model.DataNode
|
||||||
import com.intellij.openapi.externalSystem.model.project.ProjectData
|
import com.intellij.openapi.externalSystem.model.project.ProjectData
|
||||||
@@ -17,7 +17,7 @@ import org.jetbrains.kotlin.idea.scripting.gradle.minimal_gradle_version_support
|
|||||||
import org.jetbrains.plugins.gradle.model.ProjectImportModelProvider
|
import org.jetbrains.plugins.gradle.model.ProjectImportModelProvider
|
||||||
import org.jetbrains.plugins.gradle.service.project.AbstractProjectResolverExtension
|
import org.jetbrains.plugins.gradle.service.project.AbstractProjectResolverExtension
|
||||||
|
|
||||||
class KotlinGradleBuildScriptsResolver : AbstractProjectResolverExtension() {
|
class KotlinDslScriptModelResolver : AbstractProjectResolverExtension() {
|
||||||
override fun getExtraProjectModelClasses(): Set<Class<out Any>> {
|
override fun getExtraProjectModelClasses(): Set<Class<out Any>> {
|
||||||
return setOf(KotlinDslScriptsModel::class.java)
|
return setOf(KotlinDslScriptsModel::class.java)
|
||||||
}
|
}
|
||||||
@@ -61,7 +61,7 @@ class KotlinGradleBuildScriptsResolver : AbstractProjectResolverExtension() {
|
|||||||
if (it.gradleProject.parent == null) {
|
if (it.gradleProject.parent == null) {
|
||||||
resolverCtx.getExtraProject(it, KotlinDslScriptsModel::class.java)?.let { model ->
|
resolverCtx.getExtraProject(it, KotlinDslScriptsModel::class.java)?.let { model ->
|
||||||
// we need a copy to avoid memory leak, as model is java rmi proxy object
|
// we need a copy to avoid memory leak, as model is java rmi proxy object
|
||||||
ideProject.gradleKotlinBuildScripts.addAll(copy(model))
|
ideProject.KOTLIN_DSL_SCRIPT_IDEA_MODELS.addAll(copy(model))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -10,7 +10,7 @@
|
|||||||
<kotlinDslFrameworkSupport implementation="org.jetbrains.kotlin.idea.configuration.KotlinDslGradleKotlinJSNodeFrameworkSupportProvider"/>
|
<kotlinDslFrameworkSupport implementation="org.jetbrains.kotlin.idea.configuration.KotlinDslGradleKotlinJSNodeFrameworkSupportProvider"/>
|
||||||
<pluginDescriptions implementation="org.jetbrains.kotlin.idea.configuration.KotlinGradlePluginDescription"/>
|
<pluginDescriptions implementation="org.jetbrains.kotlin.idea.configuration.KotlinGradlePluginDescription"/>
|
||||||
<projectResolve implementation="org.jetbrains.kotlin.idea.configuration.KotlinNonJvmGutterConfigurator" />
|
<projectResolve implementation="org.jetbrains.kotlin.idea.configuration.KotlinNonJvmGutterConfigurator" />
|
||||||
<projectResolve implementation="org.jetbrains.kotlin.idea.configuration.KotlinGradleBuildScriptsResolver" order="first"/>
|
<projectResolve implementation="org.jetbrains.kotlin.idea.scripting.gradle.importing.KotlinDslScriptModelResolver" order="first"/>
|
||||||
<projectResolve implementation="org.jetbrains.kotlin.idea.configuration.KotlinGradleProjectResolverExtension" order="first"/>
|
<projectResolve implementation="org.jetbrains.kotlin.idea.configuration.KotlinGradleProjectResolverExtension" order="first"/>
|
||||||
<projectResolve implementation="org.jetbrains.kotlin.idea.configuration.KotlinGradleCoroutineDebugProjectResolver" order="last"/>
|
<projectResolve implementation="org.jetbrains.kotlin.idea.configuration.KotlinGradleCoroutineDebugProjectResolver" order="last"/>
|
||||||
<projectResolve implementation="org.jetbrains.kotlin.kapt.idea.KaptProjectResolverExtension" order="last"/>
|
<projectResolve implementation="org.jetbrains.kotlin.kapt.idea.KaptProjectResolverExtension" order="last"/>
|
||||||
|
|||||||
@@ -28,7 +28,7 @@
|
|||||||
<projectTaskRunner implementation="org.jetbrains.kotlin.idea.gradle.execution.KotlinMPPGradleProjectTaskRunner" order="first, before gradle"/>
|
<projectTaskRunner implementation="org.jetbrains.kotlin.idea.gradle.execution.KotlinMPPGradleProjectTaskRunner" order="first, before gradle"/>
|
||||||
<externalProjectDataService implementation="org.jetbrains.kotlin.idea.configuration.KotlinSourceSetDataService"/>
|
<externalProjectDataService implementation="org.jetbrains.kotlin.idea.configuration.KotlinSourceSetDataService"/>
|
||||||
<externalProjectDataService implementation="org.jetbrains.kotlin.idea.configuration.KotlinGradleProjectSettingsDataService"/>
|
<externalProjectDataService implementation="org.jetbrains.kotlin.idea.configuration.KotlinGradleProjectSettingsDataService"/>
|
||||||
<externalProjectDataService implementation="org.jetbrains.kotlin.idea.configuration.KotlinGradleBuildScriptsDataService"/>
|
<externalProjectDataService implementation="org.jetbrains.kotlin.idea.scripting.gradle.importing.KotlinDslScriptModelDataService"/>
|
||||||
<registryKey key="kotlin.mpp.tests.force.gradle"
|
<registryKey key="kotlin.mpp.tests.force.gradle"
|
||||||
description="Run multi-platform tests with Gradle runner even if the platform runner is used by default.
|
description="Run multi-platform tests with Gradle runner even if the platform runner is used by default.
|
||||||
This setting currently affects only HMPP projects. You may need to delete existing test configurations for the change to take place."
|
This setting currently affects only HMPP projects. You may need to delete existing test configurations for the change to take place."
|
||||||
|
|||||||
Reference in New Issue
Block a user