Build: Add :prepare:cidr-plugin project

This commit is contained in:
Vyacheslav Gerasimov
2018-03-22 23:37:24 +03:00
parent bd0ad26dcf
commit d33b3cd4ee
5 changed files with 73 additions and 2 deletions
+1
View File
@@ -1,6 +1,7 @@
<component name="ProjectDictionaryState"> <component name="ProjectDictionaryState">
<dictionary name="4u7"> <dictionary name="4u7">
<words> <words>
<w>cidr</w>
<w>foldable</w> <w>foldable</w>
</words> </words>
</dictionary> </dictionary>
+2
View File
@@ -94,6 +94,7 @@ val ideaSandboxDir = "$commonLocalDataDir/ideaSandbox"
val ideaUltimateSandboxDir = "$commonLocalDataDir/ideaUltimateSandbox" val ideaUltimateSandboxDir = "$commonLocalDataDir/ideaUltimateSandbox"
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"
// TODO: use "by extra()" syntax where possible // TODO: use "by extra()" syntax where possible
extra["distLibDir"] = project.file(distLibDir) extra["distLibDir"] = project.file(distLibDir)
@@ -103,6 +104,7 @@ extra["ideaSandboxDir"] = project.file(ideaSandboxDir)
extra["ideaUltimateSandboxDir"] = project.file(ideaUltimateSandboxDir) extra["ideaUltimateSandboxDir"] = project.file(ideaUltimateSandboxDir)
extra["ideaPluginDir"] = project.file(ideaPluginDir) extra["ideaPluginDir"] = project.file(ideaPluginDir)
extra["ideaUltimatePluginDir"] = project.file(ideaUltimatePluginDir) extra["ideaUltimatePluginDir"] = project.file(ideaUltimatePluginDir)
extra["cidrPluginDir"] = project.file(cidrPluginDir)
extra["isSonatypeRelease"] = false extra["isSonatypeRelease"] = false
Properties().apply { Properties().apply {
+5 -2
View File
@@ -3,8 +3,8 @@
import groovy.lang.Closure import groovy.lang.Closure
import org.gradle.api.Project import org.gradle.api.Project
import org.gradle.api.Task import org.gradle.api.Task
import org.gradle.api.file.CopySourceSpec
import org.gradle.api.file.SourceDirectorySet import org.gradle.api.file.SourceDirectorySet
import org.gradle.api.internal.AbstractTask
import org.gradle.api.plugins.JavaPluginConvention import org.gradle.api.plugins.JavaPluginConvention
import org.gradle.api.tasks.JavaExec import org.gradle.api.tasks.JavaExec
import org.gradle.api.tasks.SourceSetOutput import org.gradle.api.tasks.SourceSetOutput
@@ -13,6 +13,7 @@ import org.gradle.kotlin.dsl.extra
import org.gradle.kotlin.dsl.get import org.gradle.kotlin.dsl.get
import org.gradle.kotlin.dsl.the import org.gradle.kotlin.dsl.the
import java.io.File import java.io.File
import java.util.concurrent.Callable
inline fun <reified T : Task> Project.task(noinline configuration: T.() -> Unit) = tasks.creating(T::class, configuration) inline fun <reified T : Task> Project.task(noinline configuration: T.() -> Unit) = tasks.creating(T::class, configuration)
@@ -61,4 +62,6 @@ fun Project.getBooleanProperty(name: String): Boolean? = this.findProperty(name)
val v = it.toString() val v = it.toString()
if (v.isBlank()) true if (v.isBlank()) true
else v.toBoolean() else v.toBoolean()
} }
inline fun CopySourceSpec.from(crossinline filesProvider: () -> Any?): CopySourceSpec = from(Callable { filesProvider() })
+64
View File
@@ -0,0 +1,64 @@
import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar
import groovy.lang.Closure
import java.io.FilterReader
description = "Kotlin AppCode & CLion plugin"
apply {
plugin("kotlin")
}
val ideaPluginDir: File by rootProject.extra
val cidrPluginDir: File by rootProject.extra
val kotlinPlugin by configurations.creating
val pluginXmlPath = "META-INF/plugin.xml"
dependencies {
kotlinPlugin(project(":prepare:idea-plugin", configuration = "runtimeJar"))
}
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(File(buildDir, name, pluginXmlPath))
doFirst {
val placeholderRegex = Regex(
"""<!-- CLION-PLUGIN-PLACEHOLDER-START -->(.*)<!-- CLION-PLUGIN-PLACEHOLDER-END -->""",
RegexOption.DOT_MATCHES_ALL)
val versionRegex = Regex("""<version>([^<]+)</version>""")
zipTree(inputs.files.singleFile)
.matching { include(pluginXmlPath) }
.singleFile
.readText()
.replace(placeholderRegex, "")
.replace(versionRegex, "<version>$pluginFullVersionNumber</version>")
.also { pluginXmlText ->
outputs.files.singleFile.writeText(pluginXmlText)
}
}
}
val jar = runtimeJar {
archiveName = "kotlin-plugin.jar"
dependsOn(kotlinPlugin)
from {
zipTree(kotlinPlugin.singleFile).matching {
exclude(pluginXmlPath)
}
}
from(pluginXml) { into("META-INF") }
}
task<Copy>("cidrPlugin") {
into(cidrPluginDir)
from(ideaPluginDir) { exclude("lib/kotlin-plugin.jar") }
from(jar) { into("lib") }
}
+1
View File
@@ -118,6 +118,7 @@ include ":kotlin-build-common",
":prepare:formatter", ":prepare:formatter",
":prepare:ide-lazy-resolver", ":prepare:ide-lazy-resolver",
":prepare:idea-plugin", ":prepare:idea-plugin",
":prepare:cidr-plugin",
":android-lint", ":android-lint",
":kotlin-compiler", ":kotlin-compiler",
":kotlin-compiler-embeddable", ":kotlin-compiler-embeddable",