diff --git a/build.gradle.kts b/build.gradle.kts index 4710c22..4b322bf 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -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 section from README.md and provide for the plugin's manifest - pluginDescription.set( - file("README.md").readText().lines().run { - val start = "" - val 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 = "" + val 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()) }) } }