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 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> {
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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>")
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user