Extract logic common for different platforms to simplify bunch process
This commit is contained in:
-59
@@ -7,41 +7,15 @@ package org.jetbrains.kotlin.idea.configuration
|
|||||||
|
|
||||||
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
|
||||||
import com.intellij.openapi.util.Key
|
|
||||||
import com.intellij.openapi.util.Pair
|
import com.intellij.openapi.util.Pair
|
||||||
import com.intellij.util.Consumer
|
import com.intellij.util.Consumer
|
||||||
import org.gradle.tooling.model.idea.IdeaProject
|
import org.gradle.tooling.model.idea.IdeaProject
|
||||||
import org.gradle.tooling.model.kotlin.dsl.EditorReportSeverity
|
|
||||||
import org.gradle.tooling.model.kotlin.dsl.KotlinDslModelsParameters.*
|
import org.gradle.tooling.model.kotlin.dsl.KotlinDslModelsParameters.*
|
||||||
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
|
||||||
import org.jetbrains.plugins.gradle.model.ProjectImportExtraModelProvider
|
import org.jetbrains.plugins.gradle.model.ProjectImportExtraModelProvider
|
||||||
import org.jetbrains.plugins.gradle.service.project.AbstractProjectResolverExtension
|
import org.jetbrains.plugins.gradle.service.project.AbstractProjectResolverExtension
|
||||||
|
|
||||||
data class GradleKotlinBuildScriptData(
|
|
||||||
val file: String,
|
|
||||||
val classPath: List<String>,
|
|
||||||
val sourcePath: List<String>,
|
|
||||||
val imports: List<String>,
|
|
||||||
val messages: List<Message>
|
|
||||||
) {
|
|
||||||
data class Message(
|
|
||||||
val severity: Severity,
|
|
||||||
val text: String,
|
|
||||||
val position: Position? = null
|
|
||||||
)
|
|
||||||
|
|
||||||
data class Position(val line: Int, val column: Int)
|
|
||||||
|
|
||||||
enum class Severity { WARNING, ERROR }
|
|
||||||
}
|
|
||||||
|
|
||||||
var DataNode<out ProjectData>.gradleKotlinBuildScripts
|
|
||||||
by NotNullableCopyableDataNodeUserDataProperty(
|
|
||||||
Key.create<List<GradleKotlinBuildScriptData>>("GRADLE_KOTLIN_BUILD_SCRIPTS"),
|
|
||||||
emptyList()
|
|
||||||
)
|
|
||||||
|
|
||||||
class KotlinGradleBuildScriptsResolver : AbstractProjectResolverExtension() {
|
class KotlinGradleBuildScriptsResolver : 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)
|
||||||
@@ -74,37 +48,4 @@ class KotlinGradleBuildScriptsResolver : AbstractProjectResolverExtension() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun requiresTaskRunning() = true
|
override fun requiresTaskRunning() = true
|
||||||
|
|
||||||
fun copy(model: KotlinDslScriptsModel): List<GradleKotlinBuildScriptData> {
|
|
||||||
return model.scriptModels.map { (file, model) ->
|
|
||||||
val messages = mutableListOf<GradleKotlinBuildScriptData.Message>()
|
|
||||||
|
|
||||||
model.exceptions.forEach {
|
|
||||||
messages.add(
|
|
||||||
GradleKotlinBuildScriptData.Message(GradleKotlinBuildScriptData.Severity.ERROR, it)
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
model.editorReports.forEach {
|
|
||||||
messages.add(GradleKotlinBuildScriptData.Message(
|
|
||||||
when (it.severity) {
|
|
||||||
EditorReportSeverity.WARNING -> GradleKotlinBuildScriptData.Severity.WARNING
|
|
||||||
else -> GradleKotlinBuildScriptData.Severity.ERROR
|
|
||||||
},
|
|
||||||
it.message,
|
|
||||||
it.position?.let { position ->
|
|
||||||
GradleKotlinBuildScriptData.Position(position.line, position.column)
|
|
||||||
}
|
|
||||||
))
|
|
||||||
}
|
|
||||||
|
|
||||||
GradleKotlinBuildScriptData(
|
|
||||||
file.absolutePath,
|
|
||||||
model.classPath.map { it.absolutePath },
|
|
||||||
model.sourcePath.map { it.absolutePath },
|
|
||||||
model.implicitImports,
|
|
||||||
messages
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
+74
@@ -0,0 +1,74 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||||
|
* 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
|
||||||
|
|
||||||
|
import com.intellij.openapi.externalSystem.model.DataNode
|
||||||
|
import com.intellij.openapi.externalSystem.model.project.ProjectData
|
||||||
|
import com.intellij.openapi.util.Key
|
||||||
|
import org.gradle.tooling.model.kotlin.dsl.EditorReportSeverity
|
||||||
|
import org.gradle.tooling.model.kotlin.dsl.KotlinDslScriptsModel
|
||||||
|
import org.jetbrains.kotlin.idea.util.NotNullableCopyableDataNodeUserDataProperty
|
||||||
|
|
||||||
|
|
||||||
|
var DataNode<out ProjectData>.gradleKotlinBuildScripts
|
||||||
|
by NotNullableCopyableDataNodeUserDataProperty(
|
||||||
|
Key.create<List<GradleKotlinBuildScriptData>>(
|
||||||
|
"GRADLE_KOTLIN_BUILD_SCRIPTS"
|
||||||
|
),
|
||||||
|
emptyList()
|
||||||
|
)
|
||||||
|
|
||||||
|
data class GradleKotlinBuildScriptData(
|
||||||
|
val file: String,
|
||||||
|
val classPath: List<String>,
|
||||||
|
val sourcePath: List<String>,
|
||||||
|
val imports: List<String>,
|
||||||
|
val messages: List<Message>
|
||||||
|
) {
|
||||||
|
data class Message(
|
||||||
|
val severity: Severity,
|
||||||
|
val text: String,
|
||||||
|
val position: Position? = null
|
||||||
|
)
|
||||||
|
|
||||||
|
data class Position(val line: Int, val column: Int)
|
||||||
|
|
||||||
|
enum class Severity { WARNING, ERROR }
|
||||||
|
}
|
||||||
|
|
||||||
|
@Suppress("unused")
|
||||||
|
fun KotlinGradleBuildScriptsResolver.copy(model: KotlinDslScriptsModel): List<GradleKotlinBuildScriptData> {
|
||||||
|
return model.scriptModels.map { (file, model) ->
|
||||||
|
val messages = mutableListOf<GradleKotlinBuildScriptData.Message>()
|
||||||
|
|
||||||
|
model.exceptions.forEach {
|
||||||
|
messages.add(
|
||||||
|
GradleKotlinBuildScriptData.Message(GradleKotlinBuildScriptData.Severity.ERROR, it)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
model.editorReports.forEach {
|
||||||
|
messages.add(GradleKotlinBuildScriptData.Message(
|
||||||
|
when (it.severity) {
|
||||||
|
EditorReportSeverity.WARNING -> GradleKotlinBuildScriptData.Severity.WARNING
|
||||||
|
else -> GradleKotlinBuildScriptData.Severity.ERROR
|
||||||
|
},
|
||||||
|
it.message,
|
||||||
|
it.position?.let { position ->
|
||||||
|
GradleKotlinBuildScriptData.Position(position.line, position.column)
|
||||||
|
}
|
||||||
|
))
|
||||||
|
}
|
||||||
|
|
||||||
|
GradleKotlinBuildScriptData(
|
||||||
|
file.absolutePath,
|
||||||
|
model.classPath.map { it.absolutePath },
|
||||||
|
model.sourcePath.map { it.absolutePath },
|
||||||
|
model.implicitImports,
|
||||||
|
messages
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user