Build: Add :prepare:cidr-plugin project
This commit is contained in:
Generated
+1
@@ -1,6 +1,7 @@
|
||||
<component name="ProjectDictionaryState">
|
||||
<dictionary name="4u7">
|
||||
<words>
|
||||
<w>cidr</w>
|
||||
<w>foldable</w>
|
||||
</words>
|
||||
</dictionary>
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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() })
|
||||
|
||||
@@ -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") }
|
||||
}
|
||||
@@ -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",
|
||||
|
||||
Reference in New Issue
Block a user