mirror of
https://github.com/JetBrains/intellij-platform-plugin-template.git
synced 2024-10-27 20:44:05 +00:00
Migrate to provider API adding configuration cache compatibility
Using the provider API defers configuration work until it is needed, reducing configuration time. Furthermore, it is required for making the build configuration cache compatible.
This commit is contained in:
parent
f1df5a5a94
commit
f147d6950f
@ -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 -->"
|
||||
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) }
|
||||
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()) })
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user