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">
<dictionary name="4u7">
<words>
<w>cidr</w>
<w>foldable</w>
</words>
</dictionary>
+2
View File
@@ -94,6 +94,7 @@ val ideaSandboxDir = "$commonLocalDataDir/ideaSandbox"
val ideaUltimateSandboxDir = "$commonLocalDataDir/ideaUltimateSandbox"
val ideaPluginDir = "$distDir/artifacts/ideaPlugin/Kotlin"
val ideaUltimatePluginDir = "$distDir/artifacts/ideaUltimatePlugin/Kotlin"
val cidrPluginDir = "$distDir/artifacts/cidrPlugin/Kotlin"
// TODO: use "by extra()" syntax where possible
extra["distLibDir"] = project.file(distLibDir)
@@ -103,6 +104,7 @@ extra["ideaSandboxDir"] = project.file(ideaSandboxDir)
extra["ideaUltimateSandboxDir"] = project.file(ideaUltimateSandboxDir)
extra["ideaPluginDir"] = project.file(ideaPluginDir)
extra["ideaUltimatePluginDir"] = project.file(ideaUltimatePluginDir)
extra["cidrPluginDir"] = project.file(cidrPluginDir)
extra["isSonatypeRelease"] = false
Properties().apply {
+5 -2
View File
@@ -3,8 +3,8 @@
import groovy.lang.Closure
import org.gradle.api.Project
import org.gradle.api.Task
import org.gradle.api.file.CopySourceSpec
import org.gradle.api.file.SourceDirectorySet
import org.gradle.api.internal.AbstractTask
import org.gradle.api.plugins.JavaPluginConvention
import org.gradle.api.tasks.JavaExec
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.the
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)
@@ -61,4 +62,6 @@ fun Project.getBooleanProperty(name: String): Boolean? = this.findProperty(name)
val v = it.toString()
if (v.isBlank()) true
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:ide-lazy-resolver",
":prepare:idea-plugin",
":prepare:cidr-plugin",
":android-lint",
":kotlin-compiler",
":kotlin-compiler-embeddable",