diff --git a/build.gradle.kts b/build.gradle.kts index 06816ad..90e1797 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,37 +1,108 @@ -import org.jetbrains.changelog.Changelog import org.jetbrains.changelog.markdownToHTML import org.jetbrains.intellij.platform.gradle.TestFrameworkType +import java.net.URI plugins { + `maven-publish` id("java") // Java support - alias(libs.plugins.kotlin) // Kotlin support + alias(libs.plugins.kotlin) // IntelliJ Platform Gradle Plugin alias(libs.plugins.intelliJPlatform) // IntelliJ Platform Gradle Plugin alias(libs.plugins.changelog) // Gradle Changelog Plugin alias(libs.plugins.qodana) // Gradle Qodana Plugin alias(libs.plugins.kover) // Gradle Kover Plugin } + group = providers.gradleProperty("pluginGroup").get() version = providers.gradleProperty("pluginVersion").get() +// pawrequest custom github repo/dependency adder +val thisArtifactID = providers.gradleProperty("pluginRepositoryUrl").get().substringAfterLast("/") +val thisVendorName = providers.gradleProperty("pluginRepositoryUrl").get().substringBeforeLast("/").substringAfterLast("/") +//val theseCustomDependencies = providers.gradleProperty("customDependencies") +// .orNull // Returns null if the property is missing +// ?.split(",") // Split only if the property is present +// ?: emptyList() // Provide an empty list if the property is missing +val theseCustomDependencies = providers.gradleProperty("customDependencies") + .orNull // Returns null if the property is missing + ?.split(",") // Split only if the property is present + ?.filter { it.isNotBlank() } // Filter out empty strings + ?: emptyList() // Provide an empty list if the property is missing + +fun githubPackageUri(vendor: String = thisVendorName, artifactID: String = thisArtifactID): URI { + return URI.create("https://maven.pkg.github.com/$vendor/$artifactID") +} + +fun addRepoUri(repositoryHandler: RepositoryHandler, uri: URI) { + repositoryHandler.maven { + url = uri + name = "GitHubPackages" + + credentials { + username = System.getenv("GITHUB_USERNAME") + password = System.getenv("PUBLISH_TOKEN") + } + } +} + +fun addCustomRepos(repositoryHandler: RepositoryHandler) { + println("Custom Repos: $theseCustomDependencies") + for (dep in theseCustomDependencies) { + println("dep: $theseCustomDependencies") + + val depVals = dep.split(" ") + val repoUri = githubPackageUri(depVals[0], depVals[1]) + addRepoUri(repositoryHandler, repoUri) + } +} + + + +fun addCustomDependencies(dependencyHandler: DependencyHandler) { + println("Custom Dependencies: $theseCustomDependencies") + + for (dep in theseCustomDependencies) { + println("dep: $dep") + + val depVals = dep.split(" ") + val imp = "${depVals[2]}:${depVals[1]}:${depVals[3]}" + dependencyHandler.implementation(imp) + } +} + + +fun addPublication(publicationContainer: PublicationContainer) { + publicationContainer.create("mavenJava") { + from(components["java"]) + groupId = providers.gradleProperty("pluginGroup").get() + artifactId = thisArtifactID + version = providers.gradleProperty("pluginVersion").get() + } +} + + + + + // Set the JVM language level used to build the project. kotlin { - jvmToolchain(17) + jvmToolchain(21) } // Configure project's dependencies repositories { mavenCentral() - - // IntelliJ Platform Gradle Plugin Repositories Extension - read more: https://plugins.jetbrains.com/docs/intellij/tools-intellij-platform-gradle-plugin-repositories-extension.html + addCustomRepos(this) intellijPlatform { defaultRepositories() } } -// Dependencies are managed with Gradle version catalog - read more: https://docs.gradle.org/current/userguide/platforms.html#sub:version-catalog + +//// Dependencies are managed with Gradle version catalog - read more: https://docs.gradle.org/current/userguide/platforms.html#sub:version-catalog dependencies { testImplementation(libs.junit) + addCustomDependencies(this) // IntelliJ Platform Gradle Plugin Dependencies Extension - read more: https://plugins.jetbrains.com/docs/intellij/tools-intellij-platform-gradle-plugin-dependencies-extension.html intellijPlatform { @@ -43,13 +114,26 @@ dependencies { // Plugin Dependencies. Uses `platformPlugins` property from the gradle.properties file for plugin from JetBrains Marketplace. plugins(providers.gradleProperty("platformPlugins").map { it.split(',') }) - instrumentationTools() +// instrumentationTools() pluginVerifier() zipSigner() testFramework(TestFrameworkType.Platform) } } + + + +publishing { + repositories { + addRepoUri(this, githubPackageUri()) + } + publications { + addPublication(this) + } +} + + // Configure IntelliJ Platform Gradle Plugin - read more: https://plugins.jetbrains.com/docs/intellij/tools-intellij-platform-gradle-plugin-extension.html intellijPlatform { pluginConfiguration { @@ -68,18 +152,6 @@ intellijPlatform { } } - val changelog = project.changelog // local variable for configuration cache compatibility - // Get the latest available change notes from the changelog file - changeNotes = providers.gradleProperty("pluginVersion").map { pluginVersion -> - with(changelog) { - renderItem( - (getOrNull(pluginVersion) ?: getUnreleased()) - .withHeader(false) - .withEmptySections(false), - Changelog.OutputType.HTML, - ) - } - } ideaVersion { sinceBuild = providers.gradleProperty("pluginSinceBuild") @@ -87,20 +159,6 @@ intellijPlatform { } } - signing { - certificateChain = providers.environmentVariable("CERTIFICATE_CHAIN") - privateKey = providers.environmentVariable("PRIVATE_KEY") - password = providers.environmentVariable("PRIVATE_KEY_PASSWORD") - } - - publishing { - token = providers.environmentVariable("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 = providers.gradleProperty("pluginVersion").map { listOf(it.substringAfter('-', "").substringBefore('.').ifEmpty { "default" }) } - } - pluginVerification { ides { recommended() @@ -108,50 +166,4 @@ intellijPlatform { } } -// Configure Gradle Changelog Plugin - read more: https://github.com/JetBrains/gradle-changelog-plugin -changelog { - groups.empty() - repositoryUrl = providers.gradleProperty("pluginRepositoryUrl") -} -// Configure Gradle Kover Plugin - read more: https://github.com/Kotlin/kotlinx-kover#configuration -kover { - reports { - total { - xml { - onCheck = true - } - } - } -} - -tasks { - wrapper { - gradleVersion = providers.gradleProperty("gradleVersion").get() - } - - publishPlugin { - dependsOn(patchChangelog) - } -} - -intellijPlatformTesting { - runIde { - register("runIdeForUiTests") { - task { - jvmArgumentProviders += CommandLineArgumentProvider { - listOf( - "-Drobot-server.port=8082", - "-Dide.mac.message.dialogs.as.sheets=false", - "-Djb.privacy.policy.text=", - "-Djb.consents.confirmation.enabled=false", - ) - } - } - - plugins { - robotServerPlugin() - } - } - } -}