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:
+10
-6
@@ -101,8 +101,8 @@ val appcodeSandboxDir = "$commonLocalDataDir/appcodeSandbox"
|
|||||||
val ideaPluginDir = "$distDir/artifacts/ideaPlugin/Kotlin"
|
val ideaPluginDir = "$distDir/artifacts/ideaPlugin/Kotlin"
|
||||||
val ideaUltimatePluginDir = "$distDir/artifacts/ideaUltimatePlugin/Kotlin"
|
val ideaUltimatePluginDir = "$distDir/artifacts/ideaUltimatePlugin/Kotlin"
|
||||||
val cidrPluginDir = "$distDir/artifacts/cidrPlugin/Kotlin"
|
val cidrPluginDir = "$distDir/artifacts/cidrPlugin/Kotlin"
|
||||||
val appcodePluginDir = "$distDir/artifacts/appcodePlugin/kotlinNative-appcode"
|
val appcodePluginDir = "$distDir/artifacts/appcodePlugin/Kotlin"
|
||||||
val clionPluginDir = "$distDir/artifacts/clionPlugin/kotlinNative-clion"
|
val clionPluginDir = "$distDir/artifacts/clionPlugin/Kotlin"
|
||||||
|
|
||||||
// TODO: use "by extra()" syntax where possible
|
// TODO: use "by extra()" syntax where possible
|
||||||
extra["distLibDir"] = project.file(distLibDir)
|
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") }
|
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?
|
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)
|
val destFile = File(destPath)
|
||||||
|
|
||||||
destinationDir = destFile.parentFile
|
destinationDir = destFile.parentFile
|
||||||
@@ -701,10 +703,12 @@ fun zipCidrPlugin(product: String) = tasks.creating(Zip::class.java) {
|
|||||||
|
|
||||||
if (includeCidr) {
|
if (includeCidr) {
|
||||||
val appcodePlugin by cidrPlugin("AppCode", appcodePluginDir)
|
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 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> {
|
configure<IdeaModel> {
|
||||||
|
|||||||
@@ -20,11 +20,6 @@ dependencies {
|
|||||||
}
|
}
|
||||||
|
|
||||||
val pluginXml by tasks.creating {
|
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)
|
inputs.files(kotlinPlugin)
|
||||||
outputs.files(fileFrom(buildDir, name, pluginXmlPath))
|
outputs.files(fileFrom(buildDir, name, pluginXmlPath))
|
||||||
|
|
||||||
@@ -37,6 +32,8 @@ val pluginXml by tasks.creating {
|
|||||||
"""<!-- CIDR-PLUGIN-EXCLUDE-START -->(.*?)<!-- CIDR-PLUGIN-EXCLUDE-END -->""",
|
"""<!-- CIDR-PLUGIN-EXCLUDE-START -->(.*?)<!-- CIDR-PLUGIN-EXCLUDE-END -->""",
|
||||||
RegexOption.DOT_MATCHES_ALL)
|
RegexOption.DOT_MATCHES_ALL)
|
||||||
|
|
||||||
|
val ideaVersionRegex = Regex("""<idea-version[^/>]+/>""".trimMargin())
|
||||||
|
|
||||||
val versionRegex = Regex("""<version>([^<]+)</version>""")
|
val versionRegex = Regex("""<version>([^<]+)</version>""")
|
||||||
|
|
||||||
zipTree(inputs.files.singleFile)
|
zipTree(inputs.files.singleFile)
|
||||||
@@ -45,7 +42,8 @@ val pluginXml by tasks.creating {
|
|||||||
.readText()
|
.readText()
|
||||||
.replace(placeholderRegex, "<depends>com.intellij.modules.cidr.lang</depends>")
|
.replace(placeholderRegex, "<depends>com.intellij.modules.cidr.lang</depends>")
|
||||||
.replace(excludeRegex, "")
|
.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 ->
|
.also { pluginXmlText ->
|
||||||
outputs.files.singleFile.writeText(pluginXmlText)
|
outputs.files.singleFile.writeText(pluginXmlText)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,6 +20,8 @@ repositories {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
val kotlinVersion = rootProject.extra["kotlinVersion"] as String
|
||||||
|
|
||||||
val cidrPluginDir: File by rootProject.extra
|
val cidrPluginDir: File by rootProject.extra
|
||||||
val clionPluginDir: File by rootProject.extra
|
val clionPluginDir: File by rootProject.extra
|
||||||
val clionVersion = rootProject.extra["versions.clion"] as String
|
val clionVersion = rootProject.extra["versions.clion"] as String
|
||||||
@@ -61,7 +63,12 @@ val kotlinPluginXml by tasks.creating {
|
|||||||
|
|
||||||
val preparePluginXml by task<Copy> {
|
val preparePluginXml by task<Copy> {
|
||||||
dependsOn(":kotlin-ultimate:clion-native:assemble")
|
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) }
|
from(project(":kotlin-ultimate:clion-native").mainSourceSet.output.resourcesDir) { include(pluginXmlPath) }
|
||||||
into(pluginXmlLocation)
|
into(pluginXmlLocation)
|
||||||
|
|
||||||
@@ -70,8 +77,11 @@ val preparePluginXml by task<Copy> {
|
|||||||
val untilBuild = clionVersion.substring(0, clionVersion.lastIndexOf('.')) + ".*"
|
val untilBuild = clionVersion.substring(0, clionVersion.lastIndexOf('.')) + ".*"
|
||||||
|
|
||||||
filter {
|
filter {
|
||||||
it.replace("<!--version_placeholder-->",
|
it
|
||||||
"<idea-version since-build=\"$sinceBuild\" until-build=\"$untilBuild\"/>")
|
.replace("<!--idea_version_placeholder-->",
|
||||||
|
"<idea-version since-build=\"$sinceBuild\" until-build=\"$untilBuild\"/>")
|
||||||
|
.replace("<!--version_placeholder-->",
|
||||||
|
"<version>$clionPluginVersion</version>")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user