Gradle project configurator: fix inserting of non-kotlin library version in gradle.kts files
This commit is contained in:
+1
-2
@@ -50,8 +50,7 @@ interface GradleBuildScriptManipulator<out Psi: PsiFile> {
|
||||
|
||||
fun addKotlinLibraryToModuleBuildScript(
|
||||
scope: DependencyScope,
|
||||
libraryDescriptor: ExternalLibraryDescriptor,
|
||||
isAndroidModule: Boolean
|
||||
libraryDescriptor: ExternalLibraryDescriptor
|
||||
)
|
||||
|
||||
fun getKotlinStdlibVersion(): String?
|
||||
|
||||
+1
-2
@@ -48,8 +48,7 @@ interface GradleBuildScriptManipulator<out Psi: PsiFile> {
|
||||
|
||||
fun addKotlinLibraryToModuleBuildScript(
|
||||
scope: DependencyScope,
|
||||
libraryDescriptor: ExternalLibraryDescriptor,
|
||||
isAndroidModule: Boolean
|
||||
libraryDescriptor: ExternalLibraryDescriptor
|
||||
)
|
||||
|
||||
fun getKotlinStdlibVersion(): String?
|
||||
|
||||
+4
-5
@@ -21,6 +21,7 @@ import com.intellij.openapi.roots.ExternalLibraryDescriptor
|
||||
import com.intellij.openapi.util.text.StringUtil
|
||||
import com.intellij.psi.PsiElement
|
||||
import com.intellij.psi.codeStyle.CodeStyleManager
|
||||
import org.jetbrains.kotlin.idea.configuration.KotlinWithGradleConfigurator.Companion.getBuildScriptSettingsPsiFile
|
||||
import org.jetbrains.kotlin.idea.util.application.runReadAction
|
||||
import org.jetbrains.kotlin.idea.util.module
|
||||
import org.jetbrains.kotlin.psi.psiUtil.getChildrenOfType
|
||||
@@ -28,12 +29,11 @@ import org.jetbrains.plugins.groovy.lang.psi.GroovyFile
|
||||
import org.jetbrains.plugins.groovy.lang.psi.GroovyPsiElementFactory
|
||||
import org.jetbrains.plugins.groovy.lang.psi.api.statements.GrStatement
|
||||
import org.jetbrains.plugins.groovy.lang.psi.api.statements.blocks.GrClosableBlock
|
||||
import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.GrApplicationStatement
|
||||
import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.GrAssignmentExpression
|
||||
import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.GrMethodCall
|
||||
import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.path.GrMethodCallExpression
|
||||
import org.jetbrains.plugins.groovy.lang.psi.api.util.GrStatementOwner
|
||||
import org.jetbrains.kotlin.idea.configuration.KotlinWithGradleConfigurator.Companion.getBuildScriptSettingsPsiFile
|
||||
import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.GrApplicationStatement
|
||||
|
||||
class GroovyBuildScriptManipulator(
|
||||
override val scriptFile: GroovyFile,
|
||||
@@ -158,12 +158,11 @@ class GroovyBuildScriptManipulator(
|
||||
|
||||
override fun addKotlinLibraryToModuleBuildScript(
|
||||
scope: DependencyScope,
|
||||
libraryDescriptor: ExternalLibraryDescriptor,
|
||||
isAndroidModule: Boolean
|
||||
libraryDescriptor: ExternalLibraryDescriptor
|
||||
) {
|
||||
val dependencyString = String.format(
|
||||
"%s \"%s:%s:%s\"",
|
||||
scope.toGradleCompileScope(isAndroidModule),
|
||||
scope.toGradleCompileScope(scriptFile.module?.getBuildSystemType() == AndroidGradle),
|
||||
libraryDescriptor.libraryGroupId,
|
||||
libraryDescriptor.libraryArtifactId,
|
||||
libraryDescriptor.maxVersion
|
||||
|
||||
+21
-26
@@ -116,24 +116,15 @@ class KotlinBuildScriptManipulator(
|
||||
|
||||
override fun addKotlinLibraryToModuleBuildScript(
|
||||
scope: DependencyScope,
|
||||
libraryDescriptor: ExternalLibraryDescriptor,
|
||||
isAndroidModule: Boolean
|
||||
libraryDescriptor: ExternalLibraryDescriptor
|
||||
) {
|
||||
val kotlinLibraryVersion = libraryDescriptor.maxVersion
|
||||
.takeIf {
|
||||
!useNewSyntax(if (isAndroidModule) "kotlin-android" else KotlinGradleModuleConfigurator.KOTLIN)
|
||||
}
|
||||
.let {
|
||||
if (it == GSK_KOTLIN_VERSION_PROPERTY_NAME) "\$$it" else it
|
||||
}
|
||||
|
||||
scriptFile.getDependenciesBlock()?.apply {
|
||||
addExpressionIfMissing(
|
||||
getCompileDependencySnippet(
|
||||
libraryDescriptor.libraryGroupId,
|
||||
libraryDescriptor.libraryArtifactId,
|
||||
scope.toGradleCompileScope(isAndroidModule),
|
||||
kotlinLibraryVersion
|
||||
libraryDescriptor.maxVersion,
|
||||
scope.toGradleCompileScope(module?.getBuildSystemType() == AndroidGradle)
|
||||
)
|
||||
)
|
||||
}
|
||||
@@ -358,9 +349,6 @@ class KotlinBuildScriptManipulator(
|
||||
private fun KtBlockExpression.addPluginToClassPathIfMissing(): KtCallExpression? =
|
||||
addExpressionIfMissing(getKotlinGradlePluginClassPathSnippet()) as? KtCallExpression
|
||||
|
||||
fun getKotlinGradlePluginClassPathSnippet(): String =
|
||||
"classpath(${getKotlinModuleDependencySnippet("gradle-plugin", "\$$GSK_KOTLIN_VERSION_PROPERTY_NAME")})"
|
||||
|
||||
private fun KtBlockExpression.addBlock(name: String, first: Boolean = false): KtBlockExpression? {
|
||||
return psiFactory.createExpression("$name {\n}")
|
||||
.let { if (first) addAfter(it, null) else add(it) }
|
||||
@@ -444,6 +432,24 @@ class KotlinBuildScriptManipulator(
|
||||
private val PsiElement.psiFactory: KtPsiFactory
|
||||
get() = KtPsiFactory(this)
|
||||
|
||||
private fun getCompileDependencySnippet(
|
||||
groupId: String,
|
||||
artifactId: String,
|
||||
version: String?,
|
||||
compileScope: String = "compile"
|
||||
): String {
|
||||
if (groupId != KOTLIN_GROUP_ID) {
|
||||
return "$compileScope(\"$groupId:$artifactId:$version\")"
|
||||
}
|
||||
|
||||
if (useNewSyntax(if (scriptFile.module?.getBuildSystemType() == AndroidGradle) "kotlin-android" else KotlinGradleModuleConfigurator.KOTLIN)) {
|
||||
return "$compileScope(${getKotlinModuleDependencySnippet(artifactId)})"
|
||||
}
|
||||
|
||||
val libraryVersion = if (version == GSK_KOTLIN_VERSION_PROPERTY_NAME) "\$$version" else version
|
||||
return "$compileScope(${getKotlinModuleDependencySnippet(artifactId, libraryVersion)})"
|
||||
}
|
||||
|
||||
companion object {
|
||||
private val STDLIB_ARTIFACT_PREFIX = "org.jetbrains.kotlin:kotlin-stdlib"
|
||||
val GSK_KOTLIN_VERSION_PROPERTY_NAME = "kotlin_version"
|
||||
@@ -459,16 +465,5 @@ class KotlinBuildScriptManipulator(
|
||||
else -> "kotlinModule(\"$moduleName\", ${"\"$version\""})"
|
||||
}
|
||||
}
|
||||
|
||||
fun getCompileDependencySnippet(
|
||||
groupId: String,
|
||||
artifactId: String,
|
||||
compileScope: String = "compile",
|
||||
version: String? = null
|
||||
): String =
|
||||
if (groupId == KOTLIN_GROUP_ID)
|
||||
"$compileScope(${Companion.getKotlinModuleDependencySnippet(artifactId, version)})"
|
||||
else
|
||||
"$compileScope(\"$groupId:$artifactId:$version\")"
|
||||
}
|
||||
}
|
||||
|
||||
+1
-2
@@ -288,8 +288,7 @@ abstract class KotlinWithGradleConfigurator : KotlinProjectConfigurator {
|
||||
return
|
||||
}
|
||||
|
||||
getManipulator(buildScript)
|
||||
.addKotlinLibraryToModuleBuildScript(scope, libraryDescriptor, module.getBuildSystemType() == AndroidGradle)
|
||||
getManipulator(buildScript).addKotlinLibraryToModuleBuildScript(scope, libraryDescriptor)
|
||||
|
||||
buildScript.virtualFile?.let {
|
||||
createConfigureKotlinNotificationCollector(buildScript.project)
|
||||
|
||||
Reference in New Issue
Block a user