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(
|
fun addKotlinLibraryToModuleBuildScript(
|
||||||
scope: DependencyScope,
|
scope: DependencyScope,
|
||||||
libraryDescriptor: ExternalLibraryDescriptor,
|
libraryDescriptor: ExternalLibraryDescriptor
|
||||||
isAndroidModule: Boolean
|
|
||||||
)
|
)
|
||||||
|
|
||||||
fun getKotlinStdlibVersion(): String?
|
fun getKotlinStdlibVersion(): String?
|
||||||
|
|||||||
+1
-2
@@ -48,8 +48,7 @@ interface GradleBuildScriptManipulator<out Psi: PsiFile> {
|
|||||||
|
|
||||||
fun addKotlinLibraryToModuleBuildScript(
|
fun addKotlinLibraryToModuleBuildScript(
|
||||||
scope: DependencyScope,
|
scope: DependencyScope,
|
||||||
libraryDescriptor: ExternalLibraryDescriptor,
|
libraryDescriptor: ExternalLibraryDescriptor
|
||||||
isAndroidModule: Boolean
|
|
||||||
)
|
)
|
||||||
|
|
||||||
fun getKotlinStdlibVersion(): String?
|
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.openapi.util.text.StringUtil
|
||||||
import com.intellij.psi.PsiElement
|
import com.intellij.psi.PsiElement
|
||||||
import com.intellij.psi.codeStyle.CodeStyleManager
|
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.application.runReadAction
|
||||||
import org.jetbrains.kotlin.idea.util.module
|
import org.jetbrains.kotlin.idea.util.module
|
||||||
import org.jetbrains.kotlin.psi.psiUtil.getChildrenOfType
|
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.GroovyPsiElementFactory
|
||||||
import org.jetbrains.plugins.groovy.lang.psi.api.statements.GrStatement
|
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.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.GrAssignmentExpression
|
||||||
import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.GrMethodCall
|
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.statements.expressions.path.GrMethodCallExpression
|
||||||
import org.jetbrains.plugins.groovy.lang.psi.api.util.GrStatementOwner
|
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(
|
class GroovyBuildScriptManipulator(
|
||||||
override val scriptFile: GroovyFile,
|
override val scriptFile: GroovyFile,
|
||||||
@@ -158,12 +158,11 @@ class GroovyBuildScriptManipulator(
|
|||||||
|
|
||||||
override fun addKotlinLibraryToModuleBuildScript(
|
override fun addKotlinLibraryToModuleBuildScript(
|
||||||
scope: DependencyScope,
|
scope: DependencyScope,
|
||||||
libraryDescriptor: ExternalLibraryDescriptor,
|
libraryDescriptor: ExternalLibraryDescriptor
|
||||||
isAndroidModule: Boolean
|
|
||||||
) {
|
) {
|
||||||
val dependencyString = String.format(
|
val dependencyString = String.format(
|
||||||
"%s \"%s:%s:%s\"",
|
"%s \"%s:%s:%s\"",
|
||||||
scope.toGradleCompileScope(isAndroidModule),
|
scope.toGradleCompileScope(scriptFile.module?.getBuildSystemType() == AndroidGradle),
|
||||||
libraryDescriptor.libraryGroupId,
|
libraryDescriptor.libraryGroupId,
|
||||||
libraryDescriptor.libraryArtifactId,
|
libraryDescriptor.libraryArtifactId,
|
||||||
libraryDescriptor.maxVersion
|
libraryDescriptor.maxVersion
|
||||||
|
|||||||
+21
-26
@@ -116,24 +116,15 @@ class KotlinBuildScriptManipulator(
|
|||||||
|
|
||||||
override fun addKotlinLibraryToModuleBuildScript(
|
override fun addKotlinLibraryToModuleBuildScript(
|
||||||
scope: DependencyScope,
|
scope: DependencyScope,
|
||||||
libraryDescriptor: ExternalLibraryDescriptor,
|
libraryDescriptor: ExternalLibraryDescriptor
|
||||||
isAndroidModule: Boolean
|
|
||||||
) {
|
) {
|
||||||
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 {
|
scriptFile.getDependenciesBlock()?.apply {
|
||||||
addExpressionIfMissing(
|
addExpressionIfMissing(
|
||||||
getCompileDependencySnippet(
|
getCompileDependencySnippet(
|
||||||
libraryDescriptor.libraryGroupId,
|
libraryDescriptor.libraryGroupId,
|
||||||
libraryDescriptor.libraryArtifactId,
|
libraryDescriptor.libraryArtifactId,
|
||||||
scope.toGradleCompileScope(isAndroidModule),
|
libraryDescriptor.maxVersion,
|
||||||
kotlinLibraryVersion
|
scope.toGradleCompileScope(module?.getBuildSystemType() == AndroidGradle)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@@ -358,9 +349,6 @@ class KotlinBuildScriptManipulator(
|
|||||||
private fun KtBlockExpression.addPluginToClassPathIfMissing(): KtCallExpression? =
|
private fun KtBlockExpression.addPluginToClassPathIfMissing(): KtCallExpression? =
|
||||||
addExpressionIfMissing(getKotlinGradlePluginClassPathSnippet()) as? 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? {
|
private fun KtBlockExpression.addBlock(name: String, first: Boolean = false): KtBlockExpression? {
|
||||||
return psiFactory.createExpression("$name {\n}")
|
return psiFactory.createExpression("$name {\n}")
|
||||||
.let { if (first) addAfter(it, null) else add(it) }
|
.let { if (first) addAfter(it, null) else add(it) }
|
||||||
@@ -444,6 +432,24 @@ class KotlinBuildScriptManipulator(
|
|||||||
private val PsiElement.psiFactory: KtPsiFactory
|
private val PsiElement.psiFactory: KtPsiFactory
|
||||||
get() = KtPsiFactory(this)
|
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 {
|
companion object {
|
||||||
private val STDLIB_ARTIFACT_PREFIX = "org.jetbrains.kotlin:kotlin-stdlib"
|
private val STDLIB_ARTIFACT_PREFIX = "org.jetbrains.kotlin:kotlin-stdlib"
|
||||||
val GSK_KOTLIN_VERSION_PROPERTY_NAME = "kotlin_version"
|
val GSK_KOTLIN_VERSION_PROPERTY_NAME = "kotlin_version"
|
||||||
@@ -459,16 +465,5 @@ class KotlinBuildScriptManipulator(
|
|||||||
else -> "kotlinModule(\"$moduleName\", ${"\"$version\""})"
|
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
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
getManipulator(buildScript)
|
getManipulator(buildScript).addKotlinLibraryToModuleBuildScript(scope, libraryDescriptor)
|
||||||
.addKotlinLibraryToModuleBuildScript(scope, libraryDescriptor, module.getBuildSystemType() == AndroidGradle)
|
|
||||||
|
|
||||||
buildScript.virtualFile?.let {
|
buildScript.virtualFile?.let {
|
||||||
createConfigureKotlinNotificationCollector(buildScript.project)
|
createConfigureKotlinNotificationCollector(buildScript.project)
|
||||||
|
|||||||
Reference in New Issue
Block a user