Skip to content

Commit a62d1dc

Browse files
authored
Update IDE plugin to 2024.2 (#707)
* Update the ide plugin to 2024.2 * Add ide plugin verification task
1 parent c3c114a commit a62d1dc

File tree

16 files changed

+94
-76
lines changed

16 files changed

+94
-76
lines changed

.github/workflows/build_jvm.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,3 +100,7 @@ jobs:
100100
with:
101101
name: jvm_godot-bootstrap_debug
102102
path: modules/kotlin_jvm/kt/godot-library/build/libs/godot-bootstrap.jar
103+
104+
- name: Verify ide plugin
105+
run: |
106+
modules/kotlin_jvm/kt/gradlew -p modules/kotlin_jvm/kt/ verifyPlugin

kt/.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
# Ignore Gradle project-specific cache directory
22
.gradle
33
.kotlin
4+
.intellijPlatform
45

56
# Ignore Gradle build output directory
67
build

kt/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ plugins {
66
alias(libs.plugins.kotlin.jvm) apply false
77
id("com.utopia-rise.versioninfo")
88
alias(libs.plugins.gradleIntelliJPlugin) apply false
9+
alias(libs.plugins.ideaSync) apply false
910
}
1011

1112
version = fullGodotKotlinJvmVersion

kt/gradle/libs.versions.toml

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ godotKotlinJvm = "0.10.0"
44
kotlin = "2.0.20" # https://kotlinlang.org/docs/releases.html#release-details
55
kotlinCoroutine = "1.8.1"
66
godot = "4.3.0"
7+
ideaPluginDefaultIntellijVersion = "2024.2"
78

89
shadowJar = "8.3.0" # https://github.com/johnrengelman/shadow/releases
910
# TODO: bump kotlin poet version once: https://github.com/square/kotlinpoet/issues/1759 is fixed
@@ -20,8 +21,8 @@ grgit = "5.2.2" # https://github.com/ajoberstar/grgit/releases
2021
gradlePublish = "1.2.1" # https://plugins.gradle.org/plugin/com.gradle.plugin-publish
2122

2223
changelog = "2.2.1" # https://github.com/JetBrains/gradle-changelog-plugin/releases
23-
gradleIntelliJPlugin = "1.17.4" # https://plugins.gradle.org/plugin/org.jetbrains.intellij
24-
ideaSync = "1.1.8" # https://plugins.gradle.org/plugin/org.jetbrains.gradle.plugin.idea-ext
24+
gradleIntelliJPlugin = "2.1.0" # https://plugins.gradle.org/plugin/org.jetbrains.intellij
25+
ideaSync = "1.1.9" # https://plugins.gradle.org/plugin/org.jetbrains.gradle.plugin.idea-ext
2526
kotlinPreProcessors = "0.2.0" # https://github.com/utopia-rise/kotlin-preprocessors/tags
2627

2728
iosJdk = "21"
@@ -40,10 +41,11 @@ ideaSync = { module = "org.jetbrains.gradle.plugin.idea-ext:org.jetbrains.gradle
4041

4142
[plugins]
4243
changelog = { id = "org.jetbrains.changelog", version.ref = "changelog" }
43-
gradleIntelliJPlugin = { id = "org.jetbrains.intellij", version.ref = "gradleIntelliJPlugin" }
44+
gradleIntelliJPlugin = { id = "org.jetbrains.intellij.platform", version.ref = "gradleIntelliJPlugin" }
4445
kotlin-jvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" }
4546
java = { id = "java" }
4647
grgit = { id = "org.ajoberstar.grgit", version.ref = "grgit" }
4748
shadowJar = { id = "com.gradleup.shadow", version.ref = "shadowJar" }
4849
gradlePublish = { id = "com.gradle.plugin-publish", version.ref = "gradlePublish" }
4950
kotlinPreProcessors = { id = "com.utopia-rise.kotlin-preprocessors", version.ref = "kotlinPreProcessors" }
51+
ideaSync = { id = "org.jetbrains.gradle.plugin.idea-ext", version.ref = "ideaSync" }

kt/plugins/godot-intellij-plugin/build.gradle.kts

Lines changed: 26 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -18,67 +18,49 @@ plugins {
1818
id("com.utopia-rise.versioninfo")
1919
}
2020

21-
//sdk version: https://github.com/JetBrains/intellij-community/tags
22-
//kotlin plugin version: https://plugins.jetbrains.com/plugin/6954-kotlin/versions
23-
val buildMatrix: Map<String, BuildConfig> = mapOf(
24-
"IJ232" to BuildConfig(
25-
sdk = "232.8660.185",
26-
prefix = "IJ2023.2",
27-
extraSource = "",
28-
version = VersionRange("232.1", ""), // empty is the same as 999.* was before
29-
ideVersionsForVerifierTask = listOf("2023.2"),
30-
deps = listOf(
31-
"java",
32-
"org.jetbrains.kotlin",
33-
"gradle"
34-
) // kotlin plugin version no longer needed as it's now bundled with the IDE
35-
)
36-
)
37-
3821
// needed as the intellij plugin does add its own repositories and thus the ones defined in the settings.gradle.kts are ignored. Hence, we need to redefine them here
3922
repositories {
4023
mavenLocal()
4124
mavenCentral()
4225
google()
4326
maven { url = uri("https://plugins.gradle.org/m2/") } // needed for shadowJar plugin dependency implementation in `godot-gradle-plugin`
27+
28+
intellijPlatform {
29+
defaultRepositories()
30+
}
4431
}
4532

4633
version = fullGodotKotlinJvmVersion
47-
4834
group = "com.utopia-rise"
4935

50-
val sdkVersion = project.properties["godot.plugins.intellij.version"] ?: "IJ232"
51-
val settings = checkNotNull(buildMatrix[sdkVersion])
52-
53-
// Configure gradle-intellij-plugin plugin.
54-
// Read more: https://github.com/JetBrains/gradle-intellij-plugin
55-
intellij {
56-
pluginName.set("godot-jvm-idea-plugin")
57-
version.set(settings.sdk)
58-
type.set("IC")
59-
downloadSources.set(true)
60-
updateSinceUntilBuild.set(true)
61-
62-
plugins.set(settings.deps)
63-
}
36+
val intellijVersion: String = project.properties["godot.plugins.intellij.version"]?.toString() ?: libs.versions.ideaPluginDefaultIntellijVersion.get()
6437

6538
kotlin {
66-
jvmToolchain(17)
67-
68-
sourceSets {
69-
main {
70-
kotlin.srcDirs("src/${settings.extraSource}/kotlin")
71-
}
72-
}
39+
jvmToolchain(21)
7340
}
7441

7542
dependencies {
7643
implementation("com.utopia-rise:tools-common:$fullGodotKotlinJvmVersion")
7744
implementation("com.utopia-rise:jvm-godot-resource-serialization:0.1.0")
7845
implementation(project(":godot-build-props"))
7946
implementation(project(":godot-plugins-common"))
47+
48+
// https://plugins.jetbrains.com/docs/intellij/tools-intellij-platform-gradle-plugin.html
49+
intellijPlatform {
50+
intellijIdeaCommunity(intellijVersion)
51+
52+
bundledPlugin("com.intellij.java")
53+
bundledPlugin("org.jetbrains.kotlin")
54+
bundledPlugin("com.intellij.gradle")
55+
56+
instrumentationTools()
57+
pluginVerifier()
58+
zipSigner()
59+
}
8060
}
8161

62+
intellijPlatform.pluginVerification.ides.ide(intellijVersion)
63+
8264
tasks {
8365
runIde {
8466
jvmArgs("-Xmx2000m")
@@ -87,12 +69,11 @@ tasks {
8769
patchPluginXml {
8870
if (isSnapshot) {
8971
val projectVersion = project.version as String
90-
version.set("${projectVersion.removeSuffix("-SNAPSHOT")}-${settings.prefix}-SNAPSHOT")
72+
this.pluginVersion.set("${projectVersion.removeSuffix("-SNAPSHOT")}-IJ$intellijVersion-SNAPSHOT")
9173
} else {
92-
version.set("${project.version}-${settings.prefix}")
74+
this.pluginVersion.set("${project.version}-IJ$intellijVersion")
9375
}
94-
sinceBuild.set(settings.version.since)
95-
untilBuild.set(settings.version.until)
76+
sinceBuild.set("242.3")
9677

9778
// Extract the <!-- Plugin description --> section from README.md and provide for the plugin's manifest
9879
pluginDescription.set(
@@ -111,10 +92,6 @@ tasks {
11192
changeNotes.set(changelog.renderItem(changelog.getLatest(), Changelog.OutputType.HTML))
11293
}
11394

114-
runPluginVerifier {
115-
ideVersions.set(settings.ideVersionsForVerifierTask)
116-
}
117-
11895
publishPlugin {
11996
dependsOn("patchChangelog")
12097
token.set(System.getenv("GODOT_KOTLIN_INTELLIJ_PLUGIN_PUBLISH"))
@@ -130,8 +107,8 @@ tasks {
130107
}
131108

132109
withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompile> {
133-
kotlinOptions {
134-
freeCompilerArgs += "-Xjvm-default=all"
110+
compilerOptions {
111+
freeCompilerArgs.add("-Xjvm-default=all")
135112
}
136113
}
137114
}

kt/plugins/godot-intellij-plugin/src/main/kotlin/godot/intellij/plugin/annotator/property/PropertyHintAnnotationChecker.kt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ import godot.tools.common.constants.GodotKotlinJvmTypes
1212
import godot.tools.common.constants.GodotTypes
1313
import godot.tools.common.constants.godotAnnotationPackage
1414
import godot.tools.common.constants.godotCorePackage
15-
import org.jetbrains.kotlin.idea.refactoring.fqName.fqName
1615
import org.jetbrains.kotlin.idea.util.findAnnotation
1716
import org.jetbrains.kotlin.js.descriptorUtils.getKotlinTypeFqName
1817
import org.jetbrains.kotlin.js.resolve.diagnostics.findPsi
@@ -113,7 +112,7 @@ class PropertyHintAnnotationChecker {
113112

114113
private fun checkEnumFlag(ktProperty: KtProperty, holder: AnnotationHolder) {
115114
checkForRegistrationAnnotation(ktProperty, holder)
116-
if (ktProperty.type()?.fqName?.asString()?.matches(Regex("^kotlin\\.collections\\..*Set\$")) == false) {
115+
if (ktProperty.type()?.getKotlinTypeFqName(false)?.matches(Regex("^kotlin\\.collections\\..*Set\$")) == false) {
117116
holder.registerProblem(
118117
GodotPluginBundle.message("problem.property.hint.wrongType", "kotlin.collections.Set or kotlin.collections.MutableSet"),
119118
ktProperty.findAnnotation(FqName("$godotAnnotationPackage.${GodotKotlinJvmTypes.Annotations.enumFlag}"))?.psiOrParent ?: ktProperty.nameIdentifier ?: ktProperty.navigationElement

kt/plugins/godot-intellij-plugin/src/main/kotlin/godot/intellij/plugin/annotator/reference/CallFunctionReferenceChecker.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@ import godot.intellij.plugin.extension.type
88
import godot.intellij.plugin.quickfix.TargetFunctionNotRegisteredQuickFix
99
import godot.tools.common.constants.GodotKotlinJvmTypes
1010
import godot.tools.common.constants.godotApiPackage
11-
import org.jetbrains.kotlin.idea.refactoring.fqName.fqName
1211
import org.jetbrains.kotlin.idea.references.mainReference
1312
import org.jetbrains.kotlin.idea.util.findAnnotation
13+
import org.jetbrains.kotlin.js.descriptorUtils.getKotlinTypeFqName
1414
import org.jetbrains.kotlin.name.FqName
1515

1616

@@ -65,7 +65,7 @@ object CallFunctionReferenceChecker {
6565

6666
private fun isGodotFunction(containingClass: KtClass?, callReference: KtNameReferenceExpression?) =
6767
containingClass?.fqName?.asString() == "$godotApiPackage.${GodotKotlinJvmTypes.obj}" ||
68-
containingClass?.type()?.supertypes()?.map { it.fqName?.asString() }?.any { it == "$godotApiPackage.${GodotKotlinJvmTypes.obj}" } == true ||
68+
containingClass?.type()?.supertypes()?.map { it.getKotlinTypeFqName(false) }?.any { it == "$godotApiPackage.${GodotKotlinJvmTypes.obj}" } == true ||
6969
isGodotExtensionFunction(callReference)
7070

7171
private fun isGodotExtensionFunction(callReference: KtNameReferenceExpression?): Boolean {

kt/plugins/godot-intellij-plugin/src/main/kotlin/godot/intellij/plugin/annotator/reference/SignalFunctionReferenceChecker.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,10 @@ import godot.intellij.plugin.extension.type
99
import godot.intellij.plugin.quickfix.TargetFunctionNotRegisteredQuickFix
1010
import godot.tools.common.constants.GodotKotlinJvmTypes
1111
import godot.tools.common.constants.godotCorePackage
12-
import org.jetbrains.kotlin.idea.refactoring.fqName.fqName
1312
import org.jetbrains.kotlin.idea.references.KtSimpleNameReference
1413
import org.jetbrains.kotlin.idea.references.mainReference
1514
import org.jetbrains.kotlin.idea.util.findAnnotation
15+
import org.jetbrains.kotlin.js.descriptorUtils.getKotlinTypeFqName
1616
import org.jetbrains.kotlin.name.FqName
1717

1818

@@ -39,8 +39,8 @@ object SignalFunctionReferenceChecker {
3939
)?.type()
4040

4141
if (
42-
type?.fqName?.asString() == "$godotCorePackage.${GodotKotlinJvmTypes.signal}" ||
43-
type?.supertypes()?.map { it.fqName?.asString() }?.any { it == "$godotCorePackage.${GodotKotlinJvmTypes.signal}" } == true
42+
type?.getKotlinTypeFqName(false) == "$godotCorePackage.${GodotKotlinJvmTypes.signal}" ||
43+
type?.supertypes()?.map { it.getKotlinTypeFqName(false) }?.any { it == "$godotCorePackage.${GodotKotlinJvmTypes.signal}" } == true
4444
) {
4545
val targetFunction = element
4646
.callableReference

kt/plugins/godot-intellij-plugin/src/main/kotlin/godot/intellij/plugin/gradle/GodotKotlinJvmSettings.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import com.intellij.ui.EditorNotifications
1313
import godot.intellij.plugin.GodotPluginBundle
1414
import godot.intellij.plugin.notification.SettingsFetchingNotification
1515
import godot.plugins.common.GodotKotlinJvmPropertiesFile
16+
import godot.plugins.common.gradle.action.FetchProjectModelsBuildAction
1617
import org.jetbrains.plugins.gradle.service.execution.GradleExecutionHelper
1718
import org.jetbrains.plugins.gradle.settings.DistributionType
1819
import org.jetbrains.plugins.gradle.settings.GradleExecutionSettings

kt/plugins/godot-intellij-plugin/src/main/kotlin/godot/intellij/plugin/gradle/GradleSystemListener.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import com.intellij.openapi.externalSystem.model.task.ExternalSystemTaskType.RES
66
import godot.intellij.plugin.notification.SettingsFetchingNotification
77
import org.jetbrains.kotlin.idea.configuration.GRADLE_SYSTEM_ID
88

9-
class GradleSystemListener : ExternalSystemTaskNotificationListenerAdapter() {
9+
class GradleSystemListener : ExternalSystemTaskNotificationListenerAdapter(null) {
1010
override fun onStart(
1111
id: ExternalSystemTaskId,
1212
workingDir: String?,

0 commit comments

Comments
 (0)