ZigBrains/build.gradle.kts

469 lines
14 KiB
Text
Raw Permalink Normal View History

2024-07-12 13:42:59 +02:00
import de.undercouch.gradle.tasks.download.Download
2023-08-18 23:58:39 +02:00
import groovy.xml.XmlParser
2023-07-29 12:22:51 +02:00
import org.jetbrains.changelog.Changelog
import org.jetbrains.changelog.markdownToHTML
2024-10-25 18:12:33 +02:00
import org.jetbrains.grammarkit.tasks.GenerateLexerTask
2024-06-19 21:07:56 +02:00
import org.jetbrains.intellij.platform.gradle.IntelliJPlatformType
import org.jetbrains.intellij.platform.gradle.tasks.PatchPluginXmlTask
import org.jetbrains.intellij.platform.gradle.tasks.PublishPluginTask
import org.jetbrains.intellij.platform.gradle.utils.extensionProvider
2023-07-29 12:22:51 +02:00
2024-09-20 10:19:48 +02:00
fun properties(key: String) = providers.gradleProperty(key) as Provider<String>
fun environment(key: String) = providers.environmentVariable(key) as Provider<String>
2023-07-29 12:22:51 +02:00
plugins {
2024-06-19 21:07:56 +02:00
java
2024-06-02 19:54:39 +02:00
`maven-publish`
2024-06-19 21:07:56 +02:00
`java-library`
2024-09-20 14:10:49 +02:00
id("org.jetbrains.intellij.platform") version("2.1.0")
2024-06-19 21:07:56 +02:00
id("org.jetbrains.changelog") version("2.2.1")
backport: 12.0.0 ci: 12.0.0 (cherry picked from commit 2f80528cb46ee5a13dd5cb960d361c41d62c7e28) (cherry picked from commit 87d7db94410dd30be154e585138498c67c262db8) chore: Isolate C++ toolchain into separate package to fix verifier error (cherry picked from commit c393120bf24c40d5fc5e8ce41dacc560bcb29ae8) chore: Forgot to bump gradle version in properties (cherry picked from commit b8639b0e8dc7d4e8177339d5466d98af9b87c900) fix(zig): Make go to references non-blocking (cherry picked from commit a1cee2b1ea399776f5d4bbf33c2403a9c4bf9b03) feat(zig)!: Go to declaration/usages and go to definition are now separate actions (cherry picked from commit 18e130cc52e78b69dfdd08e5f160e82d3215deb2) fix(zig): Refresh syntax highlighting after running code edits (cherry picked from commit 64eba369d61073f1dd57c999449e9ee7b914bd49) chore: Cleanup dependencies (cherry picked from commit baabbb030dc8ad729f5a1f82c523c1d6da27489b) docs: Extra information about module tree (cherry picked from commit 12ad175f510124353fd9cc6b8994355e44965161) feat(zig)!: Autogenerate zls config if not specified, based on project toolchain (cherry picked from commit 59a56b67646b0253734130a84d8d9d825effe114) feat(debugger): Library frame filter (cherry picked from commit 4e3336add808801097acc792fa3e899b26cbdaee) docs: update changelog (cherry picked from commit 7db1c621288ba1cac25e85b682d981fd8cc2d4b8) feat!: Reimplemented go to declaration/usages to replace the built-in action Also removed mouse handling, no longer needed (cherry picked from commit 6f481ac844f80701f22d9383a3ff228ea3ee440d) feat(debugger): Detect C++ debugger toolchains (cherry picked from commit 6df7cb6dc059c622a0e06ace38558c8b495bd91e) fix(zig): Add proper lang key for notification group (cherry picked from commit b8f64ac0062847279b6c85b00083711900e8f7cf) chore(buildscript): Update gradle and gradle plugins (cherry picked from commit 45ab2d9bb7834be9bc2914f962d3a21bef494fbd) fix(lsp): Force always creating a new DocumentEventManager https://github.com/ballerina-platform/lsp4intellij/commit/34b29ee729c85d59b972313f5480c305785228d8 (cherry picked from commit 59c1f4612d353de3230419d005206dada4900a7f) fix(lsp): unregisterManager method's cleanup https://github.com/ballerina-platform/lsp4intellij/commit/bc9c5ea31c2b0735f3a3620d64b72e58198d24a5 (cherry picked from commit 14a1a9d79f09573d3d7c8cfb27bb008cb63ca38b) chore(lsp): Extract shared logic https://github.com/ballerina-platform/lsp4intellij/commit/75a5fd8919fd253c6bd0a69d7c9b183348b43814 (cherry picked from commit 857a0224897e27968fa03f93b0f9a02bc109f0b0) fix(lsp): Remove duplicated changedConfiguration calls https://github.com/ballerina-platform/lsp4intellij/commit/9b2b0557c93dbdb8cbe2b7a6b09925286a44d663 (cherry picked from commit ceb347d8723130c8ee4097a78fed5f14615805ee) chore(lsp): Small code cleanup https://github.com/ballerina-platform/lsp4intellij/commit/8c1e6736df760f29b3fdd8e372d2e949fd7ba330 (cherry picked from commit 1e1b4aaaeafabfe76abad22cc18aa51629098012) fix(lsp): Code action annotations lose range https://github.com/ballerina-platform/lsp4intellij/commit/00bbd6ff455e5f061acab6ff51b1a755507f2cd1 (cherry picked from commit d920fa37f32549d7d7419fa07e478b94cc8ae8ba) fix(lsp): Request code actions immediately after diagnostics arrive https://github.com/ballerina-platform/lsp4intellij/commit/0fe2cf98fe030a4c268259d5b0b3d372dd10f0c2 (cherry picked from commit 36138213ba878eaf97e9c7f0642b9927672d2e59)
2024-02-29 20:41:56 +01:00
id("org.jetbrains.grammarkit") version("2022.3.2.2")
2024-07-12 13:42:59 +02:00
id("de.undercouch.download") version("5.6.0")
2023-07-29 12:22:51 +02:00
}
2024-09-20 10:19:48 +02:00
val publishVersions = listOf("232", "233", "241", "242", "243")
2024-06-02 19:54:39 +02:00
2024-03-04 01:53:33 +01:00
val gitVersion: groovy.lang.Closure<String> by extra
2023-08-16 13:33:22 +02:00
val grammarKitGenDir = "build/generated/sources/grammarkit/java"
val rootPackage = "com.falsepattern.zigbrains"
val rootPackagePath = rootPackage.replace('.', '/')
2023-07-31 15:32:41 +02:00
// Keep these in sync with whatever the oldest IDE version we're targeting in gradle.properties needs
2024-05-15 18:21:32 +02:00
val javaLangVersion: JavaLanguageVersion = JavaLanguageVersion.of(17)
2023-07-31 15:32:41 +02:00
val javaVersion = JavaVersion.VERSION_17
2024-06-19 21:07:56 +02:00
val baseIDE = properties("baseIDE").get()
val ideaVersion = properties("ideaVersion").get()
val clionVersion = properties("clionVersion").get()
2023-08-19 00:37:12 +02:00
2024-02-01 21:03:43 +01:00
val clionPlugins = listOf("com.intellij.clion", "com.intellij.cidr.lang", "com.intellij.cidr.base", "com.intellij.nativeDebug")
2023-08-19 00:37:12 +02:00
2024-06-19 21:07:56 +02:00
val lsp4jVersion = "0.21.1"
2024-10-17 10:24:19 +02:00
val lsp4ijVersion = "0.7.0"
2024-06-19 21:07:56 +02:00
val lsp4ijNightly = lsp4ijVersion.contains("-")
val lsp4ijDepString = "${if (lsp4ijNightly) "nightly." else ""}com.jetbrains.plugins:com.redhat.devtools.lsp4ij:$lsp4ijVersion"
val lsp4ijPluginString = "com.redhat.devtools.lsp4ij:$lsp4ijVersion${if (lsp4ijNightly) "@nightly" else ""}"
val lsp4ijDep: DependencyHandler.() -> Unit = {
intellijPlatformPluginDependency(lsp4ijDepString)
compileOnlyApi(lsp4ijDepString)
compileOnlyApi("org.eclipse.lsp4j:org.eclipse.lsp4j:$lsp4jVersion")
}
2023-08-18 23:58:39 +02:00
tasks {
wrapper {
gradleVersion = properties("gradleVersion").get()
2023-07-31 15:32:41 +02:00
}
}
backport: master fix: Local variables now show up in the debugger properly chore: The flattening chore: Remove unnecessary plugin xmls docs: Update module tree chore: Remove flexmark, replace with builtin intellij apis fix: wrong lsp4j package (used IJ shipped lsp4j instead of ours) (cherry picked from commit 49483a9f9c41b16050c50011df47a0acc11288c9) ci: fix deps (cherry picked from commit 1ff8616d264dd4ac02b8b35a04fa6d1d0d0fb5d8) chore: better project path management (cherry picked from commit 0ebbe1cc9bd343eb27ed39cdcf90e7466daff587) ci: Slightly better git version management (cherry picked from commit 6fbf8265741495158d7e356b9e4feffbf7ea3eb5) chore: Optimize imports (cherry picked from commit 92c5e57a031a2646a95b4a322c6ff24e15fe98ad) chore: Require restart unconditionally (cherry picked from commit 9e90502b051ca10586e33cc56370b2e1dd62c964) docs: Update readme (cherry picked from commit 95799c627bc729678a190835c66b8c810f26d11b) docs: Update changelog (cherry picked from commit 45b153f7c4c819f6335cfef5bd9af47d1c4713a9) feat: Better configurability (cherry picked from commit ec5c07c0a1f7a776c63b8a3fb6387628431220cd) fix: Annotator jank breaking diagnostics (cherry picked from commit 85bd68393c9b5530e8a1624f0b6aeb05d0d0be62) chore: move some misplaced xml entires (cherry picked from commit 7b2ad7c3240d6b13e9f68177d46349d3729957d1) feat!: Huge debugging refactor - Debug support for Windows - Debuggable zig build - Debuggable binaries This is a squashed commit so ignore the weird author date (cherry picked from commit 3d0dbb8e369e132ba588ca645b0b56f451ccab31) fix: NPE in go to definition (cherry picked from commit b4539c0aa9d3b8519465874ce915e400d79643b4) fix: Builds on windows again (cherry picked from commit 733f0b26224b7f590e89ac25cef6801453608183) feat: Improved docs, more reliable file sync (cherry picked from commit 23b72086bc9d91399c9d3dbd26a68856b9fc13a8) chore: LanguageServerDefinition remove ancient obsolete logic (cherry picked from commit 8a0c8624463e900621e97267230aad0502592fd6) chore: Move lsp connection logic to lsp-common (cherry picked from commit 3287051e3d77e5900fa37a5fd12802f5689f9cd9) chore: Move ApplicationUtil to common (cherry picked from commit 845af09e2950441402f2944096ec0fdbd032f975) feat!: Colored builds and clickable file path references (cherry picked from commit 66aef224b272cecaad74dd52f3991e4a48ece8ed)
2024-03-04 16:55:25 +01:00
fun pluginVersion(): Provider<String> {
return provider {
System.getenv("RELEASE_VERSION")
2024-06-19 21:07:56 +02:00
}.orElse(properties("pluginVersion"))
2024-03-04 01:53:33 +01:00
}
fun pluginVersionFull(): Provider<String> {
return pluginVersion().map { it + "-" + properties("pluginSinceBuild").get() }
}
2023-08-18 23:58:39 +02:00
allprojects {
apply {
2024-06-19 21:07:56 +02:00
plugin("org.jetbrains.intellij.platform")
2023-08-18 23:58:39 +02:00
}
repositories {
mavenCentral()
2024-06-19 21:07:56 +02:00
intellijPlatform {
localPlatformArtifacts {
content {
includeGroup("bundledPlugin")
}
}
marketplace {
content {
includeGroup("com.jetbrains.plugins")
includeGroup("nightly.com.jetbrains.plugins")
}
}
releases {
content {
includeModule("com.jetbrains.intellij.clion", "clion")
includeModule("com.jetbrains.intellij.idea", "ideaIC")
includeModule("com.jetbrains.intellij.idea", "ideaIU")
}
}
2024-09-20 10:19:48 +02:00
jetbrainsIdeInstallers {
content {
includeModule("cpp", "CLion")
includeModule("idea", "ideaIC")
includeModule("idea", "ideaIU")
}
}
2024-06-19 21:07:56 +02:00
}
2023-08-18 23:58:39 +02:00
}
dependencies {
2024-06-19 21:07:56 +02:00
compileOnly("org.projectlombok:lombok:1.18.32")
annotationProcessor("org.projectlombok:lombok:1.18.32")
2024-09-20 14:10:49 +02:00
if (path !in listOf(":", ":plugin", ":debugger", ":cidr")) {
2024-06-19 21:07:56 +02:00
intellijPlatform {
2024-07-25 00:44:37 +02:00
intellijIdeaCommunity(ideaVersion, useInstaller = false)
2024-06-19 21:07:56 +02:00
}
}
2023-08-18 23:58:39 +02:00
}
2024-06-19 21:07:56 +02:00
if (path in listOf(":zig", ":zon")) {
apply {
plugin("org.jetbrains.grammarkit")
}
sourceSets {
main {
java {
srcDirs(
"${grammarKitGenDir}/lexer",
"${grammarKitGenDir}/parser"
)
}
}
}
tasks {
generateLexer {
enabled = true
purgeOldFiles = true
}
generateParser {
enabled = true
targetRootOutputDir = file("${grammarKitGenDir}/parser")
}
register<DefaultTask>("generateGrammars") {
description = "Generate source code from parser/lexer definitions"
group = "build setup"
dependsOn("generateLexer")
dependsOn("generateParser")
}
compileJava {
dependsOn("generateGrammars")
2023-08-18 23:58:39 +02:00
}
}
}
2023-07-29 12:22:51 +02:00
2023-08-18 23:58:39 +02:00
configure<JavaPluginExtension> {
toolchain {
languageVersion.set(javaLangVersion)
2024-07-12 13:42:59 +02:00
vendor = JvmVendorSpec.JETBRAINS
2023-08-18 23:58:39 +02:00
}
sourceCompatibility = javaVersion
targetCompatibility = javaVersion
2023-07-29 12:22:51 +02:00
}
backport: master fix: Local variables now show up in the debugger properly chore: The flattening chore: Remove unnecessary plugin xmls docs: Update module tree chore: Remove flexmark, replace with builtin intellij apis fix: wrong lsp4j package (used IJ shipped lsp4j instead of ours) (cherry picked from commit 49483a9f9c41b16050c50011df47a0acc11288c9) ci: fix deps (cherry picked from commit 1ff8616d264dd4ac02b8b35a04fa6d1d0d0fb5d8) chore: better project path management (cherry picked from commit 0ebbe1cc9bd343eb27ed39cdcf90e7466daff587) ci: Slightly better git version management (cherry picked from commit 6fbf8265741495158d7e356b9e4feffbf7ea3eb5) chore: Optimize imports (cherry picked from commit 92c5e57a031a2646a95b4a322c6ff24e15fe98ad) chore: Require restart unconditionally (cherry picked from commit 9e90502b051ca10586e33cc56370b2e1dd62c964) docs: Update readme (cherry picked from commit 95799c627bc729678a190835c66b8c810f26d11b) docs: Update changelog (cherry picked from commit 45b153f7c4c819f6335cfef5bd9af47d1c4713a9) feat: Better configurability (cherry picked from commit ec5c07c0a1f7a776c63b8a3fb6387628431220cd) fix: Annotator jank breaking diagnostics (cherry picked from commit 85bd68393c9b5530e8a1624f0b6aeb05d0d0be62) chore: move some misplaced xml entires (cherry picked from commit 7b2ad7c3240d6b13e9f68177d46349d3729957d1) feat!: Huge debugging refactor - Debug support for Windows - Debuggable zig build - Debuggable binaries This is a squashed commit so ignore the weird author date (cherry picked from commit 3d0dbb8e369e132ba588ca645b0b56f451ccab31) fix: NPE in go to definition (cherry picked from commit b4539c0aa9d3b8519465874ce915e400d79643b4) fix: Builds on windows again (cherry picked from commit 733f0b26224b7f590e89ac25cef6801453608183) feat: Improved docs, more reliable file sync (cherry picked from commit 23b72086bc9d91399c9d3dbd26a68856b9fc13a8) chore: LanguageServerDefinition remove ancient obsolete logic (cherry picked from commit 8a0c8624463e900621e97267230aad0502592fd6) chore: Move lsp connection logic to lsp-common (cherry picked from commit 3287051e3d77e5900fa37a5fd12802f5689f9cd9) chore: Move ApplicationUtil to common (cherry picked from commit 845af09e2950441402f2944096ec0fdbd032f975) feat!: Colored builds and clickable file path references (cherry picked from commit 66aef224b272cecaad74dd52f3991e4a48ece8ed)
2024-03-04 16:55:25 +01:00
tasks.withType(JavaCompile::class) {
options.encoding = "UTF-8"
}
2023-08-18 23:58:39 +02:00
group = properties("pluginGroup").get()
2024-03-04 01:53:33 +01:00
version = pluginVersionFull().get()
2023-07-29 12:22:51 +02:00
2023-08-18 23:58:39 +02:00
tasks {
runIde { enabled = false }
prepareSandbox { enabled = false }
buildSearchableOptions { enabled = false }
2024-06-19 21:07:56 +02:00
verifyPlugin { enabled = false }
buildPlugin { enabled = false }
signPlugin { enabled = false }
verifyPluginProjectConfiguration { enabled = false }
2023-07-29 12:22:51 +02:00
2023-08-18 23:58:39 +02:00
withType<PatchPluginXmlTask> {
sinceBuild = properties("pluginSinceBuild")
2024-09-20 10:19:48 +02:00
untilBuild = properties("pluginUntilBuild").flatMap {provider { it.ifBlank { null } }}
2023-08-18 23:58:39 +02:00
}
2023-07-29 12:22:51 +02:00
}
2024-06-19 21:07:56 +02:00
intellijPlatform {
instrumentCode = false
2024-10-03 14:53:49 +02:00
buildSearchableOptions = false
}
}
2024-06-19 21:07:56 +02:00
project(":common") {
2023-08-19 00:37:12 +02:00
backport: master fix: Local variables now show up in the debugger properly chore: The flattening chore: Remove unnecessary plugin xmls docs: Update module tree chore: Remove flexmark, replace with builtin intellij apis fix: wrong lsp4j package (used IJ shipped lsp4j instead of ours) (cherry picked from commit 49483a9f9c41b16050c50011df47a0acc11288c9) ci: fix deps (cherry picked from commit 1ff8616d264dd4ac02b8b35a04fa6d1d0d0fb5d8) chore: better project path management (cherry picked from commit 0ebbe1cc9bd343eb27ed39cdcf90e7466daff587) ci: Slightly better git version management (cherry picked from commit 6fbf8265741495158d7e356b9e4feffbf7ea3eb5) chore: Optimize imports (cherry picked from commit 92c5e57a031a2646a95b4a322c6ff24e15fe98ad) chore: Require restart unconditionally (cherry picked from commit 9e90502b051ca10586e33cc56370b2e1dd62c964) docs: Update readme (cherry picked from commit 95799c627bc729678a190835c66b8c810f26d11b) docs: Update changelog (cherry picked from commit 45b153f7c4c819f6335cfef5bd9af47d1c4713a9) feat: Better configurability (cherry picked from commit ec5c07c0a1f7a776c63b8a3fb6387628431220cd) fix: Annotator jank breaking diagnostics (cherry picked from commit 85bd68393c9b5530e8a1624f0b6aeb05d0d0be62) chore: move some misplaced xml entires (cherry picked from commit 7b2ad7c3240d6b13e9f68177d46349d3729957d1) feat!: Huge debugging refactor - Debug support for Windows - Debuggable zig build - Debuggable binaries This is a squashed commit so ignore the weird author date (cherry picked from commit 3d0dbb8e369e132ba588ca645b0b56f451ccab31) fix: NPE in go to definition (cherry picked from commit b4539c0aa9d3b8519465874ce915e400d79643b4) fix: Builds on windows again (cherry picked from commit 733f0b26224b7f590e89ac25cef6801453608183) feat: Improved docs, more reliable file sync (cherry picked from commit 23b72086bc9d91399c9d3dbd26a68856b9fc13a8) chore: LanguageServerDefinition remove ancient obsolete logic (cherry picked from commit 8a0c8624463e900621e97267230aad0502592fd6) chore: Move lsp connection logic to lsp-common (cherry picked from commit 3287051e3d77e5900fa37a5fd12802f5689f9cd9) chore: Move ApplicationUtil to common (cherry picked from commit 845af09e2950441402f2944096ec0fdbd032f975) feat!: Colored builds and clickable file path references (cherry picked from commit 66aef224b272cecaad74dd52f3991e4a48ece8ed)
2024-03-04 16:55:25 +01:00
}
2024-06-19 21:07:56 +02:00
project(":zig") {
backport: master fix: Local variables now show up in the debugger properly chore: The flattening chore: Remove unnecessary plugin xmls docs: Update module tree chore: Remove flexmark, replace with builtin intellij apis fix: wrong lsp4j package (used IJ shipped lsp4j instead of ours) (cherry picked from commit 49483a9f9c41b16050c50011df47a0acc11288c9) ci: fix deps (cherry picked from commit 1ff8616d264dd4ac02b8b35a04fa6d1d0d0fb5d8) chore: better project path management (cherry picked from commit 0ebbe1cc9bd343eb27ed39cdcf90e7466daff587) ci: Slightly better git version management (cherry picked from commit 6fbf8265741495158d7e356b9e4feffbf7ea3eb5) chore: Optimize imports (cherry picked from commit 92c5e57a031a2646a95b4a322c6ff24e15fe98ad) chore: Require restart unconditionally (cherry picked from commit 9e90502b051ca10586e33cc56370b2e1dd62c964) docs: Update readme (cherry picked from commit 95799c627bc729678a190835c66b8c810f26d11b) docs: Update changelog (cherry picked from commit 45b153f7c4c819f6335cfef5bd9af47d1c4713a9) feat: Better configurability (cherry picked from commit ec5c07c0a1f7a776c63b8a3fb6387628431220cd) fix: Annotator jank breaking diagnostics (cherry picked from commit 85bd68393c9b5530e8a1624f0b6aeb05d0d0be62) chore: move some misplaced xml entires (cherry picked from commit 7b2ad7c3240d6b13e9f68177d46349d3729957d1) feat!: Huge debugging refactor - Debug support for Windows - Debuggable zig build - Debuggable binaries This is a squashed commit so ignore the weird author date (cherry picked from commit 3d0dbb8e369e132ba588ca645b0b56f451ccab31) fix: NPE in go to definition (cherry picked from commit b4539c0aa9d3b8519465874ce915e400d79643b4) fix: Builds on windows again (cherry picked from commit 733f0b26224b7f590e89ac25cef6801453608183) feat: Improved docs, more reliable file sync (cherry picked from commit 23b72086bc9d91399c9d3dbd26a68856b9fc13a8) chore: LanguageServerDefinition remove ancient obsolete logic (cherry picked from commit 8a0c8624463e900621e97267230aad0502592fd6) chore: Move lsp connection logic to lsp-common (cherry picked from commit 3287051e3d77e5900fa37a5fd12802f5689f9cd9) chore: Move ApplicationUtil to common (cherry picked from commit 845af09e2950441402f2944096ec0fdbd032f975) feat!: Colored builds and clickable file path references (cherry picked from commit 66aef224b272cecaad74dd52f3991e4a48ece8ed)
2024-03-04 16:55:25 +01:00
apply {
plugin("java-library")
}
dependencies {
implementation(project(":common"))
2024-06-19 21:07:56 +02:00
lsp4ijDep()
intellijPlatform {
plugin(lsp4ijPluginString)
2024-10-17 11:29:50 +02:00
bundledPlugin("org.intellij.intelliLang")
2024-06-19 21:07:56 +02:00
}
2023-08-08 22:59:16 +02:00
}
2023-08-18 23:58:39 +02:00
tasks {
generateLexer {
sourceFile = file("src/main/grammar/Zig.flex")
backport: 12.0.0 ci: 12.0.0 (cherry picked from commit 2f80528cb46ee5a13dd5cb960d361c41d62c7e28) (cherry picked from commit 87d7db94410dd30be154e585138498c67c262db8) chore: Isolate C++ toolchain into separate package to fix verifier error (cherry picked from commit c393120bf24c40d5fc5e8ce41dacc560bcb29ae8) chore: Forgot to bump gradle version in properties (cherry picked from commit b8639b0e8dc7d4e8177339d5466d98af9b87c900) fix(zig): Make go to references non-blocking (cherry picked from commit a1cee2b1ea399776f5d4bbf33c2403a9c4bf9b03) feat(zig)!: Go to declaration/usages and go to definition are now separate actions (cherry picked from commit 18e130cc52e78b69dfdd08e5f160e82d3215deb2) fix(zig): Refresh syntax highlighting after running code edits (cherry picked from commit 64eba369d61073f1dd57c999449e9ee7b914bd49) chore: Cleanup dependencies (cherry picked from commit baabbb030dc8ad729f5a1f82c523c1d6da27489b) docs: Extra information about module tree (cherry picked from commit 12ad175f510124353fd9cc6b8994355e44965161) feat(zig)!: Autogenerate zls config if not specified, based on project toolchain (cherry picked from commit 59a56b67646b0253734130a84d8d9d825effe114) feat(debugger): Library frame filter (cherry picked from commit 4e3336add808801097acc792fa3e899b26cbdaee) docs: update changelog (cherry picked from commit 7db1c621288ba1cac25e85b682d981fd8cc2d4b8) feat!: Reimplemented go to declaration/usages to replace the built-in action Also removed mouse handling, no longer needed (cherry picked from commit 6f481ac844f80701f22d9383a3ff228ea3ee440d) feat(debugger): Detect C++ debugger toolchains (cherry picked from commit 6df7cb6dc059c622a0e06ace38558c8b495bd91e) fix(zig): Add proper lang key for notification group (cherry picked from commit b8f64ac0062847279b6c85b00083711900e8f7cf) chore(buildscript): Update gradle and gradle plugins (cherry picked from commit 45ab2d9bb7834be9bc2914f962d3a21bef494fbd) fix(lsp): Force always creating a new DocumentEventManager https://github.com/ballerina-platform/lsp4intellij/commit/34b29ee729c85d59b972313f5480c305785228d8 (cherry picked from commit 59c1f4612d353de3230419d005206dada4900a7f) fix(lsp): unregisterManager method's cleanup https://github.com/ballerina-platform/lsp4intellij/commit/bc9c5ea31c2b0735f3a3620d64b72e58198d24a5 (cherry picked from commit 14a1a9d79f09573d3d7c8cfb27bb008cb63ca38b) chore(lsp): Extract shared logic https://github.com/ballerina-platform/lsp4intellij/commit/75a5fd8919fd253c6bd0a69d7c9b183348b43814 (cherry picked from commit 857a0224897e27968fa03f93b0f9a02bc109f0b0) fix(lsp): Remove duplicated changedConfiguration calls https://github.com/ballerina-platform/lsp4intellij/commit/9b2b0557c93dbdb8cbe2b7a6b09925286a44d663 (cherry picked from commit ceb347d8723130c8ee4097a78fed5f14615805ee) chore(lsp): Small code cleanup https://github.com/ballerina-platform/lsp4intellij/commit/8c1e6736df760f29b3fdd8e372d2e949fd7ba330 (cherry picked from commit 1e1b4aaaeafabfe76abad22cc18aa51629098012) fix(lsp): Code action annotations lose range https://github.com/ballerina-platform/lsp4intellij/commit/00bbd6ff455e5f061acab6ff51b1a755507f2cd1 (cherry picked from commit d920fa37f32549d7d7419fa07e478b94cc8ae8ba) fix(lsp): Request code actions immediately after diagnostics arrive https://github.com/ballerina-platform/lsp4intellij/commit/0fe2cf98fe030a4c268259d5b0b3d372dd10f0c2 (cherry picked from commit 36138213ba878eaf97e9c7f0642b9927672d2e59)
2024-02-29 20:41:56 +01:00
targetOutputDir = file("${grammarKitGenDir}/lexer/${rootPackagePath}/zig/lexer")
2023-08-18 23:58:39 +02:00
}
2023-08-08 22:59:16 +02:00
2024-10-25 18:12:33 +02:00
register<GenerateLexerTask>("generateStringLexer") {
sourceFile = file("src/main/grammar/ZigString.flex")
targetOutputDir = file("${grammarKitGenDir}/lexer/${rootPackagePath}/zig/stringlexer")
purgeOldFiles = true
}
2023-08-18 23:58:39 +02:00
generateParser {
sourceFile = file("src/main/grammar/Zig.bnf")
pathToParser = "${rootPackagePath}/zig/psi/ZigParser.java"
pathToPsiRoot = "${rootPackagePath}/zig/psi"
}
2024-10-25 18:12:33 +02:00
named("generateGrammars") {
dependsOn("generateStringLexer")
}
2023-08-08 22:59:16 +02:00
}
2023-08-18 23:58:39 +02:00
}
2023-08-08 22:59:16 +02:00
2023-08-19 21:49:45 +02:00
project(":project") {
dependencies {
implementation(project(":common"))
implementation(project(":zig"))
}
}
2024-09-20 14:10:49 +02:00
project(":cidr") {
dependencies {
implementation(project(":common"))
implementation(project(":project"))
intellijPlatform {
clion(clionVersion, useInstaller = false)
for (p in clionPlugins) {
bundledPlugin(p)
}
}
}
}
2024-06-19 21:07:56 +02:00
project(":debugger") {
dependencies {
implementation(project(":zig"))
implementation(project(":project"))
implementation(project(":common"))
implementation("org.eclipse.lsp4j:org.eclipse.lsp4j.debug:$lsp4jVersion") {
exclude("org.eclipse.lsp4j", "org.eclipse.lsp4j")
exclude("org.eclipse.lsp4j", "org.eclipse.lsp4j.jsonrpc")
exclude("com.google.code.gson", "gson")
}
intellijPlatform {
2024-07-25 00:44:37 +02:00
clion(clionVersion, useInstaller = false)
2024-06-19 21:07:56 +02:00
for (p in clionPlugins) {
bundledPlugin(p)
}
}
}
2024-07-12 13:42:59 +02:00
val genOutputDir = layout.buildDirectory.dir("generated-resources")
sourceSets["main"].resources.srcDir(genOutputDir)
tasks {
register<Download>("downloadProps") {
src("https://falsepattern.com/zigbrains/msvc.properties")
dest(genOutputDir.map { it.file("msvc.properties") })
}
processResources {
dependsOn("downloadProps")
}
}
2024-06-19 21:07:56 +02:00
}
2023-08-18 23:58:39 +02:00
project(":zon") {
dependencies {
implementation(project(":common"))
}
2023-08-18 23:58:39 +02:00
tasks {
generateLexer {
sourceFile = file("src/main/grammar/Zon.flex")
backport: 12.0.0 ci: 12.0.0 (cherry picked from commit 2f80528cb46ee5a13dd5cb960d361c41d62c7e28) (cherry picked from commit 87d7db94410dd30be154e585138498c67c262db8) chore: Isolate C++ toolchain into separate package to fix verifier error (cherry picked from commit c393120bf24c40d5fc5e8ce41dacc560bcb29ae8) chore: Forgot to bump gradle version in properties (cherry picked from commit b8639b0e8dc7d4e8177339d5466d98af9b87c900) fix(zig): Make go to references non-blocking (cherry picked from commit a1cee2b1ea399776f5d4bbf33c2403a9c4bf9b03) feat(zig)!: Go to declaration/usages and go to definition are now separate actions (cherry picked from commit 18e130cc52e78b69dfdd08e5f160e82d3215deb2) fix(zig): Refresh syntax highlighting after running code edits (cherry picked from commit 64eba369d61073f1dd57c999449e9ee7b914bd49) chore: Cleanup dependencies (cherry picked from commit baabbb030dc8ad729f5a1f82c523c1d6da27489b) docs: Extra information about module tree (cherry picked from commit 12ad175f510124353fd9cc6b8994355e44965161) feat(zig)!: Autogenerate zls config if not specified, based on project toolchain (cherry picked from commit 59a56b67646b0253734130a84d8d9d825effe114) feat(debugger): Library frame filter (cherry picked from commit 4e3336add808801097acc792fa3e899b26cbdaee) docs: update changelog (cherry picked from commit 7db1c621288ba1cac25e85b682d981fd8cc2d4b8) feat!: Reimplemented go to declaration/usages to replace the built-in action Also removed mouse handling, no longer needed (cherry picked from commit 6f481ac844f80701f22d9383a3ff228ea3ee440d) feat(debugger): Detect C++ debugger toolchains (cherry picked from commit 6df7cb6dc059c622a0e06ace38558c8b495bd91e) fix(zig): Add proper lang key for notification group (cherry picked from commit b8f64ac0062847279b6c85b00083711900e8f7cf) chore(buildscript): Update gradle and gradle plugins (cherry picked from commit 45ab2d9bb7834be9bc2914f962d3a21bef494fbd) fix(lsp): Force always creating a new DocumentEventManager https://github.com/ballerina-platform/lsp4intellij/commit/34b29ee729c85d59b972313f5480c305785228d8 (cherry picked from commit 59c1f4612d353de3230419d005206dada4900a7f) fix(lsp): unregisterManager method's cleanup https://github.com/ballerina-platform/lsp4intellij/commit/bc9c5ea31c2b0735f3a3620d64b72e58198d24a5 (cherry picked from commit 14a1a9d79f09573d3d7c8cfb27bb008cb63ca38b) chore(lsp): Extract shared logic https://github.com/ballerina-platform/lsp4intellij/commit/75a5fd8919fd253c6bd0a69d7c9b183348b43814 (cherry picked from commit 857a0224897e27968fa03f93b0f9a02bc109f0b0) fix(lsp): Remove duplicated changedConfiguration calls https://github.com/ballerina-platform/lsp4intellij/commit/9b2b0557c93dbdb8cbe2b7a6b09925286a44d663 (cherry picked from commit ceb347d8723130c8ee4097a78fed5f14615805ee) chore(lsp): Small code cleanup https://github.com/ballerina-platform/lsp4intellij/commit/8c1e6736df760f29b3fdd8e372d2e949fd7ba330 (cherry picked from commit 1e1b4aaaeafabfe76abad22cc18aa51629098012) fix(lsp): Code action annotations lose range https://github.com/ballerina-platform/lsp4intellij/commit/00bbd6ff455e5f061acab6ff51b1a755507f2cd1 (cherry picked from commit d920fa37f32549d7d7419fa07e478b94cc8ae8ba) fix(lsp): Request code actions immediately after diagnostics arrive https://github.com/ballerina-platform/lsp4intellij/commit/0fe2cf98fe030a4c268259d5b0b3d372dd10f0c2 (cherry picked from commit 36138213ba878eaf97e9c7f0642b9927672d2e59)
2024-02-29 20:41:56 +01:00
targetOutputDir = file("${grammarKitGenDir}/lexer/${rootPackagePath}/zon/lexer")
2023-08-18 23:58:39 +02:00
}
2023-08-18 23:58:39 +02:00
generateParser {
sourceFile = file("src/main/grammar/Zon.bnf")
pathToParser = "${rootPackagePath}/zon/psi/ZonParser.java"
pathToPsiRoot = "${rootPackagePath}/zon/psi"
}
}
2023-08-18 23:58:39 +02:00
}
2023-08-18 23:58:39 +02:00
project(":plugin") {
dependencies {
2024-06-19 21:07:56 +02:00
implementation(project(":common"))
2023-08-18 23:58:39 +02:00
implementation(project(":zig"))
2023-08-19 21:49:45 +02:00
implementation(project(":project"))
2023-08-18 23:58:39 +02:00
implementation(project(":zon"))
2024-09-20 14:10:49 +02:00
implementation(project(":cidr"))
2023-08-19 00:37:12 +02:00
implementation(project(":debugger"))
2024-06-19 21:07:56 +02:00
intellijPlatform {
zipSigner()
pluginVerifier()
when (baseIDE) {
2024-07-25 00:44:37 +02:00
"idea" -> intellijIdeaCommunity(ideaVersion, useInstaller = false)
"clion" -> clion(clionVersion, useInstaller = false)
2024-06-19 21:07:56 +02:00
}
plugin(lsp4ijPluginString)
}
2023-08-08 22:59:16 +02:00
}
2024-06-19 21:07:56 +02:00
intellijPlatform {
projectName = "ZigBrains"
pluginConfiguration {
name = properties("pluginName")
description = providers.fileContents(rootProject.layout.projectDirectory.file("README.md")).asText.map {
val start = "<!-- Plugin description -->"
val end = "<!-- Plugin description end -->"
with(it.lines()) {
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)
}
}
changeNotes = pluginVersion().map { pluginVersion ->
with(rootProject.changelog) {
renderItem(
(getOrNull(pluginVersion) ?: getUnreleased())
.withHeader(false)
.withEmptySections(false),
Changelog.OutputType.HTML,
)
}
}
version = pluginVersionFull()
}
signing {
certificateChainFile = rootProject.file("secrets/chain.crt")
privateKeyFile = rootProject.file("secrets/private.pem")
password = environment("PRIVATE_KEY_PASSWORD")
}
2024-09-20 10:19:48 +02:00
pluginVerification {
2024-06-19 21:07:56 +02:00
ides {
ide(IntelliJPlatformType.IntellijIdeaCommunity, ideaVersion)
ide(IntelliJPlatformType.IntellijIdeaUltimate, ideaVersion)
ide(IntelliJPlatformType.CLion, clionVersion)
}
}
2023-08-18 23:58:39 +02:00
}
2023-07-29 12:22:51 +02:00
2023-08-18 23:58:39 +02:00
tasks {
runIde {
enabled = true
}
2023-08-08 23:49:28 +02:00
2023-08-18 23:58:39 +02:00
prepareSandbox {
enabled = true
}
2024-06-19 21:07:56 +02:00
verifyPlugin {
enabled = true
}
2023-08-18 23:58:39 +02:00
2024-06-19 21:07:56 +02:00
verifyPluginProjectConfiguration {
enabled = true
2023-08-18 23:58:39 +02:00
}
signPlugin {
2024-06-19 21:07:56 +02:00
enabled = true
2023-08-18 23:58:39 +02:00
}
verifyPluginSignature {
2024-06-19 21:07:56 +02:00
dependsOn(signPlugin)
2023-08-18 23:58:39 +02:00
}
2023-08-08 23:49:28 +02:00
2024-06-19 21:07:56 +02:00
buildPlugin {
2023-08-19 00:37:12 +02:00
enabled = true
}
2024-06-19 21:07:56 +02:00
}
}
2023-08-19 00:37:12 +02:00
2024-06-19 21:07:56 +02:00
dependencies {
intellijPlatform {
when (baseIDE) {
2024-07-25 00:44:37 +02:00
"idea" -> intellijIdeaCommunity(ideaVersion, useInstaller = false)
"clion" -> clion(clionVersion, useInstaller = false)
2023-08-19 00:37:12 +02:00
}
2024-06-02 19:54:39 +02:00
}
}
2024-06-19 21:07:56 +02:00
tasks {
generateLexer {
enabled = false
}
generateParser {
enabled = false
}
}
2024-06-02 19:54:39 +02:00
fun distFile(it: String) = layout.buildDirectory.file("dist/ZigBrains-${pluginVersion().get()}-$it-signed.zip")
publishVersions.forEach {
2024-06-19 21:07:56 +02:00
tasks.register<PublishPluginTask>("jbpublish-$it").configure {
archiveFile = distFile(it)
2024-06-02 19:54:39 +02:00
token = environment("IJ_PUBLISH_TOKEN")
2024-06-19 21:07:56 +02:00
channels = if (pluginVersion().get().contains("-")) listOf("nightly") else listOf("default")
2024-06-02 19:54:39 +02:00
}
2024-06-19 21:07:56 +02:00
tasks.named("publish").configure {
2024-06-02 19:54:39 +02:00
dependsOn("jbpublish-$it")
}
}
2023-08-19 00:37:12 +02:00
2024-06-02 19:54:39 +02:00
publishing {
publications {
create<MavenPublication>("maven") {
groupId = "com.falsepattern"
artifactId = "zigbrains"
version = pluginVersion().get()
publishVersions.forEach {
artifact(distFile(it)) {
classifier = "$it-signed"
extension = "zip"
}
}
}
}
repositories {
maven {
name = "mavenpattern"
url = uri("https://mvn.falsepattern.com/releases/");
credentials {
username = System.getenv("MAVEN_DEPLOY_USER")
password = System.getenv("MAVEN_DEPLOY_PASSWORD")
}
}
2023-08-18 23:58:39 +02:00
}
}
fun File.isPluginJar(): Boolean {
if (!isFile) return false
if (extension != "jar") return false
return zipTree(this).files.any { it.isManifestFile() }
}
fun File.isManifestFile(): Boolean {
if (extension != "xml") return false
val rootNode = try {
val parser = XmlParser()
parser.parse(this)
} catch (e: Exception) {
logger.error("Failed to parse $path", e)
return false
}
return rootNode.name() == "idea-plugin"
2024-06-19 21:07:56 +02:00
}