Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .github/workflows/release.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,8 @@ jobs:
- uses: actions/checkout@v2
- uses: actions/setup-java@v1
with:
java-version: 11
distribution: temurin
java-version: 25
- name: Save plugin version and type to ENV
run: |
echo "PLUGIN_VERSION=$(echo ${GITHUB_REF:10})" >> $GITHUB_ENV
Expand Down
3 changes: 2 additions & 1 deletion .github/workflows/test.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,8 @@ jobs:
- uses: actions/checkout@v2
- uses: actions/setup-java@v1
with:
java-version: 11
distribution: temurin
java-version: 25

- uses: burrunan/gradle-cache-action@v1.5
with:
Expand Down
108 changes: 59 additions & 49 deletions build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,54 +1,84 @@
import org.jetbrains.intellij.platform.gradle.TestFrameworkType
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile

plugins {
id("java")
id("org.jetbrains.kotlin.jvm") version "2.1.10"
id("org.jetbrains.intellij") version "1.17.4"
id("org.jetbrains.intellij.platform") version "2.16.0"
id("org.jetbrains.changelog") version "2.2.1"
// ktlint linter - read more: https://github.com/JLLeitschuh/ktlint-gradle
// id("org.jlleitschuh.gradle.ktlint") version "10.1.0"
}
fun properties(key: String) = project.findProperty(key).toString()

// Import variables from gradle.properties file
val pluginGroup: String by project
// `pluginName_` variable ends with `_` because of the collision with Kotlin magic getter in the `intellij` closure.
// Read more about the issue: https://github.com/JetBrains/intellij-platform-plugin-template/issues/29
val pluginName_: String by project
val pluginVersion: String by project
val pluginSinceBuild: String by project
val pluginVerifierIdeVersions: String by project
val intellijPublishChannel: String by project
val intellijPublishToken: String by project

val platformType: String by project
val platformVersion: String by project
val platformPlugins: String by project
val platformDownloadSources: String by project
val pluginGroup = properties("pluginGroup")
val pluginName_ = properties("pluginName_")
val pluginVersion = properties("pluginVersion")
val pluginSinceBuild = properties("pluginSinceBuild")
val pluginVerifierIdeVersions = properties("pluginVerifierIdeVersions")
val intellijPublishChannel = properties("intellijPublishChannel")
val intellijPublishToken = properties("intellijPublishToken")

val platformType = properties("platformType")
val platformVersion = properties("platformVersion")
val platformPlugins = properties("platformPlugins")

group = pluginGroup
version = pluginVersion
println("version: $version")
// Configure project's dependencies
repositories {
mavenCentral()
intellijPlatform {
defaultRepositories()
}
}

// Configure gradle-intellij-plugin plugin.
// Read more: https://github.com/JetBrains/gradle-intellij-plugin
intellij {
pluginName.set(pluginName_)
version.set(platformVersion)
type.set(platformType)
downloadSources.set(platformDownloadSources.toBoolean())
updateSinceUntilBuild.set(true)
// Plugin Dependencies. Uses `platformPlugins` property from the gradle.properties file.
plugins.set(properties("platformPlugins").split(',').map(String::trim).filter(String::isNotEmpty))
intellijPlatform {
buildSearchableOptions = false
pluginConfiguration {
name = pluginName_
version = pluginVersion
ideaVersion {
sinceBuild = pluginSinceBuild
}
}
publishing {
token = intellijPublishToken
channels = listOf(intellijPublishChannel, "default").filter(String::isNotEmpty).take(1)
}
pluginVerification {
ides {
create(platformType, pluginVerifierIdeVersions) {
useInstaller = true
}
}
}
}

dependencies {
testImplementation(gradleTestKit())
testImplementation(kotlin("test"))
testImplementation(kotlin("test-junit"))
intellijPlatform {
when (platformType) {
"IU" -> intellijIdeaUltimate(platformVersion)
"IC" -> intellijIdeaCommunity(platformVersion)
else -> create(platformType, platformVersion)
}
testFramework(TestFrameworkType.Platform)
platformPlugins
.split(',')
.map(String::trim)
.filter(String::isNotEmpty)
.forEach {
if (it.contains(':')) {
plugin(it)
} else {
bundledPlugin(it)
}
}
}
}

// Read more: https://github.com/JetBrains/gradle-changelog-plugin
Expand All @@ -63,29 +93,10 @@ tasks {
targetCompatibility = it
}
withType<KotlinCompile> {
kotlinOptions.jvmTarget = it
compilerOptions.jvmTarget.set(JvmTarget.fromTarget(it))
}
}

publishPlugin {
token.set(intellijPublishToken)
channels.set(listOf(intellijPublishChannel, "default").filter(String::isNotEmpty).take(1))
}
patchPluginXml {
version.set(pluginVersion)
sinceBuild.set(pluginSinceBuild)
changeNotes.set(
changelog.getLatest().toHTML()
)
}

runPluginVerifier {
ideVersions.set(
properties("pluginVerifierIdeVersions")
.split(',').map(String::trim).filter(String::isNotEmpty)
)
}

register("copyInspections") {
doLast {
inspections().forEach {
Expand Down Expand Up @@ -125,11 +136,10 @@ tasks {
// Network-sensitive tasks: run ONLY when not in --offline mode
// You'll probaly need to prime your caches during an online phase, using a command such as:
// ./gradlew help --refresh-dependencies --no-daemon
matching { name in listOf("publishPlugin", "runPluginVerifier") }.configureEach {
matching { name in listOf("publishPlugin", "verifyPlugin") }.configureEach {
onlyIf { !gradle.startParameter.isOffline }
}
}
tasks.getByName("buildSearchableOptions").onlyIf { false }

// Custom functions
fun write(file: File, content: String): Boolean {
Expand Down
2 changes: 1 addition & 1 deletion gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.0-all.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-9.7.1-all.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,10 @@ class IsToStringContext : ConstrainInterface<PsiElement> {
return (target is PhpEchoStatement)
|| (target is PhpPrintExpression)
|| (target is ConcatenationExpression)
|| (target is UnaryExpression && target.operation?.node?.elementType == PhpTokenTypes.opSTRING_CAST)
|| (target is UnaryExpression && target.operationType == PhpTokenTypes.opSTRING_CAST)
|| (
target is BinaryExpression
&& target.operation?.node?.elementType == PhpTokenTypes.opEQUAL
&& target.operationType == PhpTokenTypes.opEQUAL
&& (target.leftOperand is StringLiteralExpression || target.rightOperand is StringLiteralExpression)
)
}
Expand Down
Loading