Extract utils methods for getting gradle project settings
This commit is contained in:
+7
-10
@@ -22,16 +22,13 @@ import org.jetbrains.plugins.gradle.settings.GradleProjectSettings
|
|||||||
import org.jetbrains.plugins.gradle.util.GradleConstants
|
import org.jetbrains.plugins.gradle.util.GradleConstants
|
||||||
|
|
||||||
fun runPartialGradleImport(project: Project) {
|
fun runPartialGradleImport(project: Project) {
|
||||||
val gradleSettings = ExternalSystemApiUtil.getSettings(project, GradleConstants.SYSTEM_ID)
|
getGradleProjectSettings(project).forEach {
|
||||||
val projectSettings = gradleSettings.getLinkedProjectsSettings()
|
ExternalSystemUtil.refreshProject(
|
||||||
.filterIsInstance<GradleProjectSettings>()
|
it.externalProjectPath,
|
||||||
.firstOrNull() ?: return
|
ImportSpecBuilder(project, GradleConstants.SYSTEM_ID)
|
||||||
|
.build()
|
||||||
ExternalSystemUtil.refreshProject(
|
)
|
||||||
projectSettings.externalProjectPath,
|
}
|
||||||
ImportSpecBuilder(project, GradleConstants.SYSTEM_ID)
|
|
||||||
.build()
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private const val kotlinDslNotificationGroupId = "Gradle Kotlin DSL Scripts"
|
private const val kotlinDslNotificationGroupId = "Gradle Kotlin DSL Scripts"
|
||||||
|
|||||||
+9
-12
@@ -31,18 +31,15 @@ import org.jetbrains.plugins.gradle.util.GradleConstants
|
|||||||
import java.util.function.Predicate
|
import java.util.function.Predicate
|
||||||
|
|
||||||
fun runPartialGradleImport(project: Project) {
|
fun runPartialGradleImport(project: Project) {
|
||||||
val gradleSettings = ExternalSystemApiUtil.getSettings(project, GradleConstants.SYSTEM_ID)
|
getGradleProjectSettings(project).forEach {
|
||||||
val projectSettings = gradleSettings.getLinkedProjectsSettings()
|
ExternalSystemUtil.refreshProject(
|
||||||
.filterIsInstance<GradleProjectSettings>()
|
it.externalProjectPath,
|
||||||
.firstOrNull() ?: return
|
ImportSpecBuilder(project, GradleConstants.SYSTEM_ID)
|
||||||
|
.projectResolverPolicy(
|
||||||
ExternalSystemUtil.refreshProject(
|
GradlePartialResolverPolicy(Predicate<GradleProjectResolverExtension?> { it is KotlinDslScriptModelResolver })
|
||||||
projectSettings.externalProjectPath,
|
)
|
||||||
ImportSpecBuilder(project, GradleConstants.SYSTEM_ID)
|
)
|
||||||
.projectResolverPolicy(
|
}
|
||||||
GradlePartialResolverPolicy(Predicate<GradleProjectResolverExtension?> { it is KotlinDslScriptModelResolver })
|
|
||||||
)
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private var Project.shouldShowLoadConfiguraionsAction: Boolean?
|
private var Project.shouldShowLoadConfiguraionsAction: Boolean?
|
||||||
|
|||||||
+2
-15
@@ -7,7 +7,6 @@ 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.task.ExternalSystemTaskId
|
import com.intellij.openapi.externalSystem.model.task.ExternalSystemTaskId
|
||||||
import com.intellij.openapi.externalSystem.util.ExternalSystemApiUtil
|
|
||||||
import com.intellij.openapi.project.Project
|
import com.intellij.openapi.project.Project
|
||||||
import com.intellij.openapi.util.Key
|
import com.intellij.openapi.util.Key
|
||||||
import com.intellij.openapi.vfs.VfsUtil
|
import com.intellij.openapi.vfs.VfsUtil
|
||||||
@@ -17,15 +16,13 @@ import org.jetbrains.kotlin.idea.KotlinIdeaGradleBundle
|
|||||||
import org.jetbrains.kotlin.idea.scripting.gradle.GradleScriptInputsWatcher
|
import org.jetbrains.kotlin.idea.scripting.gradle.GradleScriptInputsWatcher
|
||||||
import org.jetbrains.kotlin.idea.scripting.gradle.GradleScriptingSupport
|
import org.jetbrains.kotlin.idea.scripting.gradle.GradleScriptingSupport
|
||||||
import org.jetbrains.kotlin.idea.scripting.gradle.getGradleScriptInputsStamp
|
import org.jetbrains.kotlin.idea.scripting.gradle.getGradleScriptInputsStamp
|
||||||
|
import org.jetbrains.kotlin.idea.scripting.gradle.getJavaHomeForGradleProject
|
||||||
import org.jetbrains.kotlin.psi.NotNullableUserDataProperty
|
import org.jetbrains.kotlin.psi.NotNullableUserDataProperty
|
||||||
import org.jetbrains.kotlin.scripting.definitions.findScriptDefinition
|
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.plugins.gradle.service.project.ProjectResolverContext
|
import org.jetbrains.plugins.gradle.service.project.ProjectResolverContext
|
||||||
import org.jetbrains.plugins.gradle.settings.GradleExecutionSettings
|
|
||||||
import org.jetbrains.plugins.gradle.settings.GradleProjectSettings
|
|
||||||
import org.jetbrains.plugins.gradle.util.GradleConstants
|
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import kotlin.script.experimental.api.*
|
import kotlin.script.experimental.api.*
|
||||||
import kotlin.script.experimental.jvm.JvmDependency
|
import kotlin.script.experimental.jvm.JvmDependency
|
||||||
@@ -115,17 +112,7 @@ private fun KotlinDslScriptsModel.toListOfScriptModels(project: Project): List<K
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun createGradleKtsContextIfPossible(project: Project): GradleKtsContext? {
|
fun createGradleKtsContextIfPossible(project: Project): GradleKtsContext? {
|
||||||
val gradleProjectSettings = ExternalSystemApiUtil.getSettings(project, GradleConstants.SYSTEM_ID)
|
val javaHome = getJavaHomeForGradleProject(project)?.let { File(it)}
|
||||||
.getLinkedProjectsSettings()
|
|
||||||
.filterIsInstance<GradleProjectSettings>().firstOrNull() ?: return null
|
|
||||||
|
|
||||||
val gradleExeSettings = ExternalSystemApiUtil.getExecutionSettings<GradleExecutionSettings>(
|
|
||||||
project,
|
|
||||||
gradleProjectSettings.externalProjectPath,
|
|
||||||
GradleConstants.SYSTEM_ID
|
|
||||||
)
|
|
||||||
|
|
||||||
val javaHome = gradleExeSettings.javaHome?.let { File(it)}
|
|
||||||
|
|
||||||
return GradleKtsContext(project, javaHome)
|
return GradleKtsContext(project, javaHome)
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-15
@@ -8,11 +8,8 @@ package org.jetbrains.kotlin.idea.scripting.gradle.importing
|
|||||||
import com.intellij.openapi.externalSystem.model.task.ExternalSystemTaskId
|
import com.intellij.openapi.externalSystem.model.task.ExternalSystemTaskId
|
||||||
import com.intellij.openapi.externalSystem.model.task.ExternalSystemTaskNotificationListenerAdapter
|
import com.intellij.openapi.externalSystem.model.task.ExternalSystemTaskNotificationListenerAdapter
|
||||||
import com.intellij.openapi.externalSystem.model.task.ExternalSystemTaskType
|
import com.intellij.openapi.externalSystem.model.task.ExternalSystemTaskType
|
||||||
import com.intellij.openapi.externalSystem.util.ExternalSystemApiUtil
|
|
||||||
import org.jetbrains.kotlin.idea.framework.GRADLE_SYSTEM_ID
|
import org.jetbrains.kotlin.idea.framework.GRADLE_SYSTEM_ID
|
||||||
import org.jetbrains.plugins.gradle.settings.GradleExecutionSettings
|
import org.jetbrains.kotlin.idea.scripting.gradle.getJavaHomeForGradleProject
|
||||||
import org.jetbrains.plugins.gradle.settings.GradleProjectSettings
|
|
||||||
import org.jetbrains.plugins.gradle.util.GradleConstants
|
|
||||||
|
|
||||||
class KotlinDslSyncListener : ExternalSystemTaskNotificationListenerAdapter() {
|
class KotlinDslSyncListener : ExternalSystemTaskNotificationListenerAdapter() {
|
||||||
override fun onEnd(id: ExternalSystemTaskId) {
|
override fun onEnd(id: ExternalSystemTaskId) {
|
||||||
@@ -27,17 +24,8 @@ class KotlinDslSyncListener : ExternalSystemTaskNotificationListenerAdapter() {
|
|||||||
|
|
||||||
if (models.isEmpty()) return
|
if (models.isEmpty()) return
|
||||||
|
|
||||||
val gradleSettings = ExternalSystemApiUtil.getSettings(project, GradleConstants.SYSTEM_ID)
|
val javaHome = getJavaHomeForGradleProject(project)
|
||||||
val projectSettings = gradleSettings.getLinkedProjectsSettings()
|
|
||||||
.filterIsInstance<GradleProjectSettings>().firstOrNull()
|
|
||||||
?: return
|
|
||||||
|
|
||||||
val gradleExeSettings = ExternalSystemApiUtil.getExecutionSettings<GradleExecutionSettings>(
|
saveScriptModels(project, id, javaHome, models)
|
||||||
project,
|
|
||||||
projectSettings.externalProjectPath,
|
|
||||||
GradleConstants.SYSTEM_ID
|
|
||||||
)
|
|
||||||
|
|
||||||
saveScriptModels(project, id, gradleExeSettings.javaHome, models)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ import org.jetbrains.kotlin.psi.KtFile
|
|||||||
import org.jetbrains.kotlin.psi.KtScriptInitializer
|
import org.jetbrains.kotlin.psi.KtScriptInitializer
|
||||||
import org.jetbrains.kotlin.psi.psiUtil.getChildrenOfType
|
import org.jetbrains.kotlin.psi.psiUtil.getChildrenOfType
|
||||||
import org.jetbrains.plugins.gradle.settings.GradleLocalSettings
|
import org.jetbrains.plugins.gradle.settings.GradleLocalSettings
|
||||||
|
import org.jetbrains.plugins.gradle.settings.GradleExecutionSettings
|
||||||
import org.jetbrains.plugins.gradle.settings.GradleProjectSettings
|
import org.jetbrains.plugins.gradle.settings.GradleProjectSettings
|
||||||
import org.jetbrains.plugins.gradle.settings.GradleSettings
|
import org.jetbrains.plugins.gradle.settings.GradleSettings
|
||||||
import org.jetbrains.plugins.gradle.util.GradleConstants
|
import org.jetbrains.plugins.gradle.util.GradleConstants
|
||||||
@@ -69,7 +70,8 @@ fun getGradleScriptInputsStamp(
|
|||||||
super.visitElement(element)
|
super.visitElement(element)
|
||||||
when (element) {
|
when (element) {
|
||||||
is PsiWhiteSpace -> if (element.text.contains("\n")) result.append("\n")
|
is PsiWhiteSpace -> if (element.text.contains("\n")) result.append("\n")
|
||||||
is PsiComment -> { }
|
is PsiComment -> {
|
||||||
|
}
|
||||||
is LeafPsiElement -> result.append(element.text)
|
is LeafPsiElement -> result.append(element.text)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -93,7 +95,7 @@ fun useScriptConfigurationFromImportOnly(): Boolean {
|
|||||||
return Registry.`is`("kotlin.gradle.scripts.useIdeaProjectImport", false)
|
return Registry.`is`("kotlin.gradle.scripts.useIdeaProjectImport", false)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getGradleVersion(externalProjectPath: String): String? {
|
fun getGradleVersion(project: Project, externalProjectPath: String): String? {
|
||||||
val localVersion = GradleLocalSettings.getInstance(project).getGradleVersion(externalProjectPath)
|
val localVersion = GradleLocalSettings.getInstance(project).getGradleVersion(externalProjectPath)
|
||||||
if (localVersion != null) return localVersion
|
if (localVersion != null) return localVersion
|
||||||
|
|
||||||
@@ -101,13 +103,26 @@ fun getGradleVersion(externalProjectPath: String): String? {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun getGradleVersion(project: Project): String? {
|
fun getGradleVersion(project: Project): String? {
|
||||||
val gradleSettings = ExternalSystemApiUtil.getSettings(project, GradleConstants.SYSTEM_ID)
|
val projectSettings = getGradleProjectSettings(project).firstOrNull()
|
||||||
val projectSettings = gradleSettings.getLinkedProjectsSettings()
|
|
||||||
.filterIsInstance<GradleProjectSettings>()
|
|
||||||
.firstOrNull()
|
|
||||||
|
|
||||||
if (projectSettings != null) {
|
if (projectSettings != null) {
|
||||||
return getGradleVersion(projectSettings.externalProjectPath)
|
return getGradleVersion(projectSettings.externalProjectPath)
|
||||||
}
|
}
|
||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun getJavaHomeForGradleProject(project: Project): String? {
|
||||||
|
val projectSettings = getGradleProjectSettings(project).firstOrNull() ?: return null
|
||||||
|
|
||||||
|
val gradleExeSettings = ExternalSystemApiUtil.getExecutionSettings<GradleExecutionSettings>(
|
||||||
|
project,
|
||||||
|
projectSettings.externalProjectPath,
|
||||||
|
GradleConstants.SYSTEM_ID
|
||||||
|
)
|
||||||
|
return gradleExeSettings.javaHome
|
||||||
|
}
|
||||||
|
|
||||||
|
fun getGradleProjectSettings(project: Project): Collection<GradleProjectSettings> {
|
||||||
|
val gradleSettings = ExternalSystemApiUtil.getSettings(project, GradleConstants.SYSTEM_ID) as GradleSettings
|
||||||
|
return gradleSettings.getLinkedProjectsSettings()
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user