mirror of
https://github.com/JetBrains/intellij-platform-plugin-template.git
synced 2024-10-27 20:44:05 +00:00
4f47d78be9
In some build environments projectDir may differ from current working directory. In such environments build before this change would fail with IOException.
123 lines
4.1 KiB
Plaintext
123 lines
4.1 KiB
Plaintext
import io.gitlab.arturbosch.detekt.Detekt
|
|
import org.jetbrains.changelog.closure
|
|
import org.jetbrains.changelog.markdownToHTML
|
|
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
|
|
|
|
fun properties(key: String) = project.findProperty(key).toString()
|
|
|
|
plugins {
|
|
// Java support
|
|
id("java")
|
|
// Kotlin support
|
|
id("org.jetbrains.kotlin.jvm") version "1.4.32"
|
|
// gradle-intellij-plugin - read more: https://github.com/JetBrains/gradle-intellij-plugin
|
|
id("org.jetbrains.intellij") version "0.7.2"
|
|
// gradle-changelog-plugin - read more: https://github.com/JetBrains/gradle-changelog-plugin
|
|
id("org.jetbrains.changelog") version "1.1.2"
|
|
// detekt linter - read more: https://detekt.github.io/detekt/gradle.html
|
|
id("io.gitlab.arturbosch.detekt") version "1.16.0"
|
|
// ktlint linter - read more: https://github.com/JLLeitschuh/ktlint-gradle
|
|
id("org.jlleitschuh.gradle.ktlint") version "10.0.0"
|
|
}
|
|
|
|
group = properties("pluginGroup")
|
|
version = properties("pluginVersion")
|
|
|
|
// Configure project's dependencies
|
|
repositories {
|
|
mavenCentral()
|
|
jcenter()
|
|
}
|
|
dependencies {
|
|
detektPlugins("io.gitlab.arturbosch.detekt:detekt-formatting:1.16.0")
|
|
}
|
|
|
|
// Configure gradle-intellij-plugin plugin.
|
|
// Read more: https://github.com/JetBrains/gradle-intellij-plugin
|
|
intellij {
|
|
pluginName = properties("pluginName")
|
|
version = properties("platformVersion")
|
|
type = properties("platformType")
|
|
downloadSources = properties("platformDownloadSources").toBoolean()
|
|
updateSinceUntilBuild = true
|
|
|
|
// Plugin Dependencies. Uses `platformPlugins` property from the gradle.properties file.
|
|
setPlugins(*properties("platformPlugins").split(',').map(String::trim).filter(String::isNotEmpty).toTypedArray())
|
|
}
|
|
|
|
// Configure gradle-changelog-plugin plugin.
|
|
// Read more: https://github.com/JetBrains/gradle-changelog-plugin
|
|
changelog {
|
|
version = properties("pluginVersion")
|
|
groups = emptyList()
|
|
}
|
|
|
|
// Configure detekt plugin.
|
|
// Read more: https://detekt.github.io/detekt/kotlindsl.html
|
|
detekt {
|
|
config = files("./detekt-config.yml")
|
|
buildUponDefaultConfig = true
|
|
|
|
reports {
|
|
html.enabled = false
|
|
xml.enabled = false
|
|
txt.enabled = false
|
|
}
|
|
}
|
|
|
|
tasks {
|
|
// Set the compatibility versions to 1.8
|
|
withType<JavaCompile> {
|
|
sourceCompatibility = "1.8"
|
|
targetCompatibility = "1.8"
|
|
}
|
|
withType<KotlinCompile> {
|
|
kotlinOptions.jvmTarget = "1.8"
|
|
}
|
|
|
|
withType<Detekt> {
|
|
jvmTarget = "1.8"
|
|
}
|
|
|
|
patchPluginXml {
|
|
version(properties("pluginVersion"))
|
|
sinceBuild(properties("pluginSinceBuild"))
|
|
untilBuild(properties("pluginUntilBuild"))
|
|
|
|
// Extract the <!-- Plugin description --> section from README.md and provide for the plugin's manifest
|
|
pluginDescription(
|
|
closure {
|
|
File(projectDir, "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").run { markdownToHTML(this) }
|
|
}
|
|
)
|
|
|
|
// Get the latest available change notes from the changelog file
|
|
changeNotes(
|
|
closure {
|
|
changelog.getLatest().toHTML()
|
|
}
|
|
)
|
|
}
|
|
|
|
runPluginVerifier {
|
|
ideVersions(properties("pluginVerifierIdeVersions"))
|
|
}
|
|
|
|
publishPlugin {
|
|
dependsOn("patchChangelog")
|
|
token(System.getenv("PUBLISH_TOKEN"))
|
|
// 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(properties("pluginVersion").split('-').getOrElse(1) { "default" }.split('.').first())
|
|
}
|
|
}
|