CLion/AppCode: New plugin versioning schema

Use -PdeployVersion=<kotlin_version> to specify Kotlin version
Use -PcidrPluginVersion=<plugin_version> to specify CLion or AppCode plugin version (default is "beta-1")
This commit is contained in:
Dmitriy Dolovov
2018-11-15 17:24:42 +07:00
parent b39656a85a
commit 597d119ab7
3 changed files with 27 additions and 15 deletions
+10 -6
View File
@@ -101,8 +101,8 @@ val appcodeSandboxDir = "$commonLocalDataDir/appcodeSandbox"
val ideaPluginDir = "$distDir/artifacts/ideaPlugin/Kotlin"
val ideaUltimatePluginDir = "$distDir/artifacts/ideaUltimatePlugin/Kotlin"
val cidrPluginDir = "$distDir/artifacts/cidrPlugin/Kotlin"
val appcodePluginDir = "$distDir/artifacts/appcodePlugin/kotlinNative-appcode"
val clionPluginDir = "$distDir/artifacts/clionPlugin/kotlinNative-clion"
val appcodePluginDir = "$distDir/artifacts/appcodePlugin/Kotlin"
val clionPluginDir = "$distDir/artifacts/clionPlugin/Kotlin"
// TODO: use "by extra()" syntax where possible
extra["distLibDir"] = project.file(distLibDir)
@@ -682,9 +682,11 @@ fun cidrPlugin(product: String, pluginDir: String) = tasks.creating(Copy::class.
from(configurations[product.toLowerCase() + "KotlinPlugin"]) { into("lib") }
}
fun zipCidrPlugin(product: String) = tasks.creating(Zip::class.java) {
fun zipCidrPlugin(product: String, productVersion: String) = tasks.creating(Zip::class.java) {
// Note: "cidrPluginVersion" has different format and semantics from "pluginVersion" used in IJ and AS plugins.
val cidrPluginVersion = project.findProperty("cidrPluginVersion") as String? ?: "beta-1"
val destPath = project.findProperty("pluginZipPath") as String?
?: "$distDir/artifacts/kotlinNative-plugin-$kotlinVersion-$product.zip"
?: "$distDir/artifacts/kotlin-plugin-$kotlinVersion-$product-$cidrPluginVersion-$productVersion.zip"
val destFile = File(destPath)
destinationDir = destFile.parentFile
@@ -701,10 +703,12 @@ fun zipCidrPlugin(product: String) = tasks.creating(Zip::class.java) {
if (includeCidr) {
val appcodePlugin by cidrPlugin("AppCode", appcodePluginDir)
val zipAppCodePlugin by zipCidrPlugin("AppCode")
val appcodeVersion = extra["versions.appcode"] as String
val zipAppCodePlugin by zipCidrPlugin("AppCode", appcodeVersion)
val clionPlugin by cidrPlugin("CLion", clionPluginDir)
val zipCLionPlugin by zipCidrPlugin("CLion")
val clionVersion = extra["versions.clion"] as String
val zipCLionPlugin by zipCidrPlugin("CLion", clionVersion)
}
configure<IdeaModel> {
+4 -6
View File
@@ -20,11 +20,6 @@ dependencies {
}
val pluginXml by tasks.creating {
val kotlinVersion: String by rootProject.extra
val pluginFullVersionNumber = findProperty("pluginVersion") as? String
?: "$kotlinVersion-CIDR"
inputs.property("pluginFullVersionNumber", pluginFullVersionNumber)
inputs.files(kotlinPlugin)
outputs.files(fileFrom(buildDir, name, pluginXmlPath))
@@ -37,6 +32,8 @@ val pluginXml by tasks.creating {
"""<!-- CIDR-PLUGIN-EXCLUDE-START -->(.*?)<!-- CIDR-PLUGIN-EXCLUDE-END -->""",
RegexOption.DOT_MATCHES_ALL)
val ideaVersionRegex = Regex("""<idea-version[^/>]+/>""".trimMargin())
val versionRegex = Regex("""<version>([^<]+)</version>""")
zipTree(inputs.files.singleFile)
@@ -45,7 +42,8 @@ val pluginXml by tasks.creating {
.readText()
.replace(placeholderRegex, "<depends>com.intellij.modules.cidr.lang</depends>")
.replace(excludeRegex, "")
.replace(versionRegex, "<version>$pluginFullVersionNumber</version>")
.replace(ideaVersionRegex, "") // IDEA version to be specified in CLion or AppCode plugin.xml file.
.replace(versionRegex, "") // Version to be specified in CLion or AppCode plugin.xml file.
.also { pluginXmlText ->
outputs.files.singleFile.writeText(pluginXmlText)
}
+13 -3
View File
@@ -20,6 +20,8 @@ repositories {
}
}
val kotlinVersion = rootProject.extra["kotlinVersion"] as String
val cidrPluginDir: File by rootProject.extra
val clionPluginDir: File by rootProject.extra
val clionVersion = rootProject.extra["versions.clion"] as String
@@ -61,7 +63,12 @@ val kotlinPluginXml by tasks.creating {
val preparePluginXml by task<Copy> {
dependsOn(":kotlin-ultimate:clion-native:assemble")
inputs.property("versions.clion", clionVersion)
val cidrPluginVersion = project.findProperty("cidrPluginVersion") as String? ?: "beta-1"
val clionPluginVersion = "$kotlinVersion-CLion-$cidrPluginVersion-$clionVersion"
inputs.property("clionPluginVersion", clionPluginVersion)
from(project(":kotlin-ultimate:clion-native").mainSourceSet.output.resourcesDir) { include(pluginXmlPath) }
into(pluginXmlLocation)
@@ -70,8 +77,11 @@ val preparePluginXml by task<Copy> {
val untilBuild = clionVersion.substring(0, clionVersion.lastIndexOf('.')) + ".*"
filter {
it.replace("<!--version_placeholder-->",
"<idea-version since-build=\"$sinceBuild\" until-build=\"$untilBuild\"/>")
it
.replace("<!--idea_version_placeholder-->",
"<idea-version since-build=\"$sinceBuild\" until-build=\"$untilBuild\"/>")
.replace("<!--version_placeholder-->",
"<version>$clionPluginVersion</version>")
}
}