scripting: drop ManualConfigurationLoading and kotlin.gradle.scripts.useIdeaProjectImport registry flag
This commit is contained in:
+1
-1
@@ -396,7 +396,7 @@ abstract class DefaultScriptingSupportBase(val manager: CompositeScriptConfigura
|
|||||||
getAppliedConfiguration(file.originalFile.virtualFile) != null
|
getAppliedConfiguration(file.originalFile.virtualFile) != null
|
||||||
|
|
||||||
fun isConfigurationLoadingInProgress(file: KtFile): Boolean {
|
fun isConfigurationLoadingInProgress(file: KtFile): Boolean {
|
||||||
return !hasCachedConfiguration(file) && !ScriptConfigurationManager.isManualConfigurationLoading(file.originalFile.virtualFile)
|
return !hasCachedConfiguration(file)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getOrLoadConfiguration(
|
fun getOrLoadConfiguration(
|
||||||
|
|||||||
-2
@@ -91,8 +91,6 @@ internal class ScriptChangesNotifier(
|
|||||||
private fun getListener(project: Project, file: VirtualFile): ScriptChangeListener? {
|
private fun getListener(project: Project, file: VirtualFile): ScriptChangeListener? {
|
||||||
if (project.isDisposed || areListenersDisabled()) return null
|
if (project.isDisposed || areListenersDisabled()) return null
|
||||||
|
|
||||||
if (ScriptConfigurationManager.isManualConfigurationLoading(file)) return null
|
|
||||||
|
|
||||||
return listeners.firstOrNull { it.isApplicable(file) }
|
return listeners.firstOrNull { it.isApplicable(file) }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
-2
@@ -40,8 +40,6 @@ open class DefaultScriptConfigurationLoader(val project: Project) : ScriptConfig
|
|||||||
): Boolean {
|
): Boolean {
|
||||||
val virtualFile = ktFile.originalFile.virtualFile
|
val virtualFile = ktFile.originalFile.virtualFile
|
||||||
|
|
||||||
if (ScriptConfigurationManager.isManualConfigurationLoading(virtualFile)) return false
|
|
||||||
|
|
||||||
val result = getConfigurationThroughScriptingApi(ktFile, virtualFile, scriptDefinition)
|
val result = getConfigurationThroughScriptingApi(ktFile, virtualFile, scriptDefinition)
|
||||||
|
|
||||||
if (KotlinScriptingSettings.getInstance(project).autoReloadConfigurations(scriptDefinition)) {
|
if (KotlinScriptingSettings.getInstance(project).autoReloadConfigurations(scriptDefinition)) {
|
||||||
|
|||||||
+2
-43
@@ -18,40 +18,10 @@ import org.jetbrains.kotlin.idea.core.util.EDT
|
|||||||
import org.jetbrains.kotlin.idea.scripting.gradle.getGradleScriptInputsStamp
|
import org.jetbrains.kotlin.idea.scripting.gradle.getGradleScriptInputsStamp
|
||||||
import org.jetbrains.kotlin.idea.scripting.gradle.isGradleKotlinScript
|
import org.jetbrains.kotlin.idea.scripting.gradle.isGradleKotlinScript
|
||||||
import org.jetbrains.kotlin.idea.scripting.gradle.roots.GradleBuildRootsManager
|
import org.jetbrains.kotlin.idea.scripting.gradle.roots.GradleBuildRootsManager
|
||||||
import org.jetbrains.kotlin.idea.scripting.gradle.useScriptConfigurationFromImportOnly
|
|
||||||
import org.jetbrains.kotlin.idea.util.application.runWriteAction
|
import org.jetbrains.kotlin.idea.util.application.runWriteAction
|
||||||
import org.jetbrains.kotlin.psi.KtFile
|
import org.jetbrains.kotlin.psi.KtFile
|
||||||
import org.jetbrains.kotlin.scripting.definitions.ScriptDefinition
|
import org.jetbrains.kotlin.scripting.definitions.ScriptDefinition
|
||||||
|
|
||||||
/**
|
|
||||||
* Loader that performs loading for .gralde.kts scripts configuration through the [DefaultScriptingSupport]
|
|
||||||
*
|
|
||||||
* TODO(gradle6): remove
|
|
||||||
*/
|
|
||||||
class GradleLegacyScriptConfigurationLoaderForOutOfProjectScripts(project: Project) : DefaultScriptConfigurationLoader(project) {
|
|
||||||
override fun loadDependencies(
|
|
||||||
isFirstLoad: Boolean,
|
|
||||||
ktFile: KtFile,
|
|
||||||
scriptDefinition: ScriptDefinition,
|
|
||||||
context: ScriptConfigurationLoadingContext
|
|
||||||
): Boolean {
|
|
||||||
val vFile = ktFile.originalFile.virtualFile
|
|
||||||
|
|
||||||
// Gradle read files from FS
|
|
||||||
GlobalScope.launch(EDT(project)) {
|
|
||||||
runWriteAction {
|
|
||||||
FileDocumentManager.getInstance().saveAllDocuments()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
val result = getConfigurationThroughScriptingApi(ktFile, vFile, scriptDefinition)
|
|
||||||
|
|
||||||
context.saveNewConfiguration(vFile, result)
|
|
||||||
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Loader that performs loading for .gralde.kts scripts configuration through the [DefaultScriptingSupport]
|
* Loader that performs loading for .gralde.kts scripts configuration through the [DefaultScriptingSupport]
|
||||||
*
|
*
|
||||||
@@ -60,10 +30,6 @@ class GradleLegacyScriptConfigurationLoaderForOutOfProjectScripts(project: Proje
|
|||||||
class GradleLegacyScriptConfigurationLoader(project: Project) : DefaultScriptConfigurationLoader(project) {
|
class GradleLegacyScriptConfigurationLoader(project: Project) : DefaultScriptConfigurationLoader(project) {
|
||||||
private val buildRootsManager = GradleBuildRootsManager.getInstance(project)
|
private val buildRootsManager = GradleBuildRootsManager.getInstance(project)
|
||||||
|
|
||||||
override fun shouldRunInBackground(scriptDefinition: ScriptDefinition): Boolean {
|
|
||||||
return if (useScriptConfigurationFromImportOnly()) false else super.shouldRunInBackground(scriptDefinition)
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun loadDependencies(
|
override fun loadDependencies(
|
||||||
isFirstLoad: Boolean,
|
isFirstLoad: Boolean,
|
||||||
ktFile: KtFile,
|
ktFile: KtFile,
|
||||||
@@ -74,19 +40,12 @@ class GradleLegacyScriptConfigurationLoader(project: Project) : DefaultScriptCon
|
|||||||
|
|
||||||
if (!isGradleKotlinScript(vFile)) return false
|
if (!isGradleKotlinScript(vFile)) return false
|
||||||
|
|
||||||
if (useScriptConfigurationFromImportOnly()) {
|
|
||||||
// do nothing, project import notification will be already showed
|
|
||||||
// and configuration for gradle build scripts will be saved at the end of import
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!buildRootsManager.isAffectedGradleProjectFile(vFile.path)) {
|
if (!buildRootsManager.isAffectedGradleProjectFile(vFile.path)) {
|
||||||
ScriptConfigurationManager.markFileWithManualConfigurationLoading(vFile)
|
// not known gradle file and not configured as standalone script
|
||||||
|
// skip
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
ScriptConfigurationManager.clearManualConfigurationLoadingIfNeeded(vFile)
|
|
||||||
|
|
||||||
// Gradle read files from FS
|
// Gradle read files from FS
|
||||||
GlobalScope.launch(EDT(project)) {
|
GlobalScope.launch(EDT(project)) {
|
||||||
runWriteAction {
|
runWriteAction {
|
||||||
|
|||||||
@@ -76,10 +76,6 @@ fun kotlinDslScriptsModelImportSupported(currentGradleVersion: String): Boolean
|
|||||||
return GradleVersion.version(currentGradleVersion) >= GradleVersion.version(minimal_gradle_version_supported)
|
return GradleVersion.version(currentGradleVersion) >= GradleVersion.version(minimal_gradle_version_supported)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun useScriptConfigurationFromImportOnly(): Boolean {
|
|
||||||
return Registry.`is`("kotlin.gradle.scripts.useIdeaProjectImport", false)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun getGradleProjectSettings(project: Project): Collection<GradleProjectSettings> =
|
fun getGradleProjectSettings(project: Project): Collection<GradleProjectSettings> =
|
||||||
(ExternalSystemApiUtil.getSettings(project, GradleConstants.SYSTEM_ID) as GradleSettings).linkedProjectsSettings
|
(ExternalSystemApiUtil.getSettings(project, GradleConstants.SYSTEM_ID) as GradleSettings).linkedProjectsSettings
|
||||||
|
|
||||||
|
|||||||
-107
@@ -1,107 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2010-2020 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.scripting.gradle
|
|
||||||
|
|
||||||
import org.jetbrains.kotlin.idea.core.script.ScriptConfigurationManager
|
|
||||||
import org.jetbrains.kotlin.idea.script.AbstractScriptConfigurationLoadingTest
|
|
||||||
import org.jetbrains.kotlin.idea.scripting.gradle.legacy.GradleLegacyScriptConfigurationLoaderForOutOfProjectScripts
|
|
||||||
import org.jetbrains.kotlin.psi.KtFile
|
|
||||||
import org.jetbrains.kotlin.test.JUnit3WithIdeaConfigurationRunner
|
|
||||||
import org.jetbrains.plugins.gradle.util.GradleConstants
|
|
||||||
import org.junit.runner.RunWith
|
|
||||||
import java.io.File
|
|
||||||
|
|
||||||
@RunWith(JUnit3WithIdeaConfigurationRunner::class)
|
|
||||||
class GradleScriptOutOfProjectTest : AbstractScriptConfigurationLoadingTest() {
|
|
||||||
|
|
||||||
override fun setUpTestProject() {
|
|
||||||
val rootDir = "idea/testData/script/definition/loading/gradle/"
|
|
||||||
|
|
||||||
val buildGradleKts = File(rootDir).walkTopDown().find { it.name == GradleConstants.KOTLIN_DSL_SCRIPT_NAME }
|
|
||||||
?: error("Couldn't find main script")
|
|
||||||
|
|
||||||
configureScriptFile(rootDir, buildGradleKts)
|
|
||||||
|
|
||||||
testAffectedGradleProjectFiles = true
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun tearDown() {
|
|
||||||
super.tearDown()
|
|
||||||
|
|
||||||
testAffectedGradleProjectFiles = false
|
|
||||||
}
|
|
||||||
|
|
||||||
private val loaderForOutOfProjectScripts by lazy {
|
|
||||||
GradleLegacyScriptConfigurationLoaderForOutOfProjectScripts(
|
|
||||||
project
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun testManualLoadingForUpToDate() {
|
|
||||||
assertConfigurationShouldBeLoadedManually()
|
|
||||||
|
|
||||||
scriptConfigurationManager.default.forceReloadConfiguration(myFile as KtFile, loaderForOutOfProjectScripts)
|
|
||||||
|
|
||||||
assertConfigurationWasLoaded()
|
|
||||||
}
|
|
||||||
|
|
||||||
fun testManualLoadingForOutOfDate() {
|
|
||||||
assertConfigurationShouldBeLoadedManually()
|
|
||||||
|
|
||||||
makeChangesInsideSections()
|
|
||||||
|
|
||||||
assertNoBackgroundTasks()
|
|
||||||
assertNoLoading()
|
|
||||||
|
|
||||||
scriptConfigurationManager.default.forceReloadConfiguration(myFile as KtFile, loaderForOutOfProjectScripts)
|
|
||||||
|
|
||||||
assertConfigurationWasLoaded()
|
|
||||||
}
|
|
||||||
|
|
||||||
fun testFileAttributesForManualLoading() {
|
|
||||||
assertConfigurationShouldBeLoadedManually()
|
|
||||||
|
|
||||||
scriptConfigurationManager.default.forceReloadConfiguration(myFile as KtFile, loaderForOutOfProjectScripts)
|
|
||||||
|
|
||||||
assertConfigurationWasLoaded()
|
|
||||||
|
|
||||||
ScriptConfigurationManager.clearCaches(project)
|
|
||||||
|
|
||||||
assertNotNull(getConfiguration())
|
|
||||||
}
|
|
||||||
|
|
||||||
fun testNoNotificationAfterForReload() {
|
|
||||||
assertConfigurationShouldBeLoadedManually()
|
|
||||||
|
|
||||||
scriptConfigurationManager.default.forceReloadConfiguration(myFile as KtFile, loaderForOutOfProjectScripts)
|
|
||||||
assertConfigurationWasLoaded()
|
|
||||||
|
|
||||||
makeChangesInsideSections()
|
|
||||||
|
|
||||||
scriptConfigurationManager.default.forceReloadConfiguration(myFile as KtFile, loaderForOutOfProjectScripts)
|
|
||||||
assertConfigurationWasLoaded()
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun makeChangesInsideSections() {
|
|
||||||
changeContents(myFile.text.replace(GradleScriptListenerTest.insidePlaceholder, "application"), myFile)
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun assertConfigurationShouldBeLoadedManually() {
|
|
||||||
assertNull(getConfiguration())
|
|
||||||
assertNoLoading()
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun assertConfigurationWasLoaded() {
|
|
||||||
assertAndDoAllBackgroundTasks()
|
|
||||||
assertSingleLoading()
|
|
||||||
assertNoSuggestedConfiguration()
|
|
||||||
assertNotNull(getConfiguration())
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun getConfiguration() =
|
|
||||||
scriptConfigurationManager.getConfiguration(myFile as KtFile)
|
|
||||||
}
|
|
||||||
@@ -116,11 +116,6 @@
|
|||||||
description="Add all transitive dependencies on MPP modules when Android project is imported"
|
description="Add all transitive dependencies on MPP modules when Android project is imported"
|
||||||
defaultValue="true"
|
defaultValue="true"
|
||||||
restartRequired="false"/>
|
restartRequired="false"/>
|
||||||
|
|
||||||
<registryKey key="kotlin.gradle.scripts.useIdeaProjectImport"
|
|
||||||
description="Use IDEA project import mechanics to load Kotlin Gradle scripts configuration"
|
|
||||||
defaultValue="false"
|
|
||||||
restartRequired="false"/>
|
|
||||||
<registryKey key="kotlin.formatter.allowTrailingCommaInAnyProject"
|
<registryKey key="kotlin.formatter.allowTrailingCommaInAnyProject"
|
||||||
description="Allow a trailing comma regardless of plugin version"
|
description="Allow a trailing comma regardless of plugin version"
|
||||||
defaultValue="false"
|
defaultValue="false"
|
||||||
|
|||||||
Reference in New Issue
Block a user