@ -1,7 +1,8 @@
import org.jetbrains.changelog.Changelog
import org.jetbrains.changelog.markdownToHTML
fun properties(key: String) = project.findProperty(key).toString()
fun properties(key: String) = providers.gradleProperty(key)
fun environment(key: String) = providers.environmentVariable(key)
plugins {
// Java support
@ -38,21 +39,21 @@ intellij {
type.set(properties("platformType"))
// Plugin Dependencies. Uses `platformPlugins` property from the gradle.properties file.
plugins.set(properties("platformPlugins").split(',').map(String::trim).filter(String::isNotEmpty))
plugins.set(properties("platformPlugins").map { it. split(',').map(String::trim).filter(String::isNotEmpty) } )
}
// Configure Gradle Changelog Plugin - read more: https://github.com/JetBrains/gradle-changelog-plugin
changelog {
groups.set( emptyList ())
groups.empty()
repositoryUrl.set(properties("pluginRepositoryUrl"))
}
// Configure Gradle Qodana Plugin - read more: https://github.com/JetBrains/gradle-qodana-plugin
qodana {
cachePath.set(file(".qodana").canonicalPath)
reportPath.set(file("build/reports/inspections").canonicalPath)
cachePath.set(provider { file(".qodana").canonicalPath } )
reportPath.set(provider { file("build/reports/inspections").canonicalPath } )
saveReport.set(true)
showReport.set(System.getenv("QODANA_SHOW_REPORT")?.toBoolean() ?: false )
showReport.set(environment("QODANA_SHOW_REPORT").map { it.toBoolean() } .getOrElse(false) )
}
// Configure Gradle Kover Plugin - read more: https://github.com/Kotlin/kotlinx-kover#configuration
@ -62,7 +63,7 @@ kover.xmlReport {
tasks {
wrapper {
gradleVersion = properties("gradleVersion")
gradleVersion = properties("gradleVersion").get()
}
patchPluginXml {
@ -71,23 +72,24 @@ tasks {
untilBuild.set(properties("pluginUntilBuild"))
// Extract the <!-- Plugin description --> section from README.md and provide for the plugin's manifest
pluginDescription.set(
file("README.md").readText().lines().run {
val start = "<!-- Plugin description -->"
val end = "<!-- Plugin description end -->"
if (!containsAll(listOf(start, end))) {
throw GradleException("Plugin description section not found in README.md:\n$start ... $end")
}
subList(indexOf(start) + 1, indexOf(end))
}.joinToString("\n").let { markdownToHTML(it) }
pluginDescription.set(provider {
file("README.md").readText().lines().run {
val start = "<!-- Plugin description -->"
val end = "<!-- Plugin description end -->"
if (!containsAll(listOf(start, end))) {
throw GradleException("Plugin description section not found in README.md:\n$start ... $end")
}
subList(indexOf(start) + 1, indexOf(end))
}.joinToString("\n").let { markdownToHTML(it) }
}
)
// Get the latest available change notes from the changelog file
changeNotes.set(provider {
with(changelog) {
renderItem(
getOrNull(properties("pluginVersion"))
getOrNull(properties("pluginVersion").get() )
?: runCatching { getLatest() }.getOrElse { getUnreleased() },
Changelog.OutputType.HTML,
)
@ -105,17 +107,17 @@ tasks {
}
signPlugin {
certificateChain.set(System.getenv ("CERTIFICATE_CHAIN"))
privateKey.set(System.getenv ("PRIVATE_KEY"))
password.set(System.getenv ("PRIVATE_KEY_PASSWORD"))
certificateChain.set(environment ("CERTIFICATE_CHAIN"))
privateKey.set(environment ("PRIVATE_KEY"))
password.set(environment ("PRIVATE_KEY_PASSWORD"))
}
publishPlugin {
dependsOn("patchChangelog")
token.set(System.getenv ("PUBLISH_TOKEN"))
token.set(environment ("PUBLISH_TOKEN"))
// The pluginVersion is based on the SemVer (https://semver.org) and supports pre-release labels, like 2.1.7-alpha.3
// Specify pre-release label to publish the plugin in a custom Release Channel automatically. Read more:
// https://plugins.jetbrains.com/docs/intellij/deployment.html#specifying-a-release-channel
channels.set(listOf( properties("pluginVersion").split('-').getOrElse(1) { "default" }.split('.').first()))
channels.set(properties("pluginVersion").map { listOf(it .split('-').getOrElse(1) { "default" }.split('.').first()) } )
}
}