From b1fd0f8fc4594fcc7536840feb697371d3e24b9e Mon Sep 17 00:00:00 2001 From: Faur Ioan-Aurel Date: Fri, 28 Mar 2025 00:23:02 +0200 Subject: [PATCH 1/2] impl: improve publish task - marketplace token should be in JETBRAINS_MARKETPLACE_PUBLISH_TOKEN env. variable - calls the proper api for upload based on whether it's the first release version or not --- build.gradle.kts | 39 ++++++++++++++++++++++++++++++++------- 1 file changed, 32 insertions(+), 7 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index 3dcab05..f693646 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -5,6 +5,8 @@ import com.github.jk1.license.render.JsonReportRenderer import com.jetbrains.plugin.structure.toolbox.ToolboxMeta import com.jetbrains.plugin.structure.toolbox.ToolboxPluginDescriptor import org.jetbrains.intellij.pluginRepository.PluginRepositoryFactory +import org.jetbrains.intellij.pluginRepository.model.LicenseUrl +import org.jetbrains.intellij.pluginRepository.model.ProductFamily import org.jetbrains.kotlin.com.intellij.openapi.util.SystemInfoRt import org.jetbrains.kotlin.gradle.dsl.JvmTarget import java.nio.file.Path @@ -187,20 +189,43 @@ private fun getPluginInstallDir(): Path { return pluginsDir / extension.id } -val publishPlugin by tasks.creating { +val publishPlugin by tasks.registering { dependsOn(pluginZip) doLast { + val pluginMarketplaceToken: String = if (System.getenv("JETBRAINS_MARKETPLACE_PUBLISH_TOKEN").isNullOrBlank()) { + error("Env. variable `JETBRAINS_MARKETPLACE_PUBLISH_TOKEN` does not exist. Please set the env. variable to a token obtained from the marketplace.") + } else { + System.getenv("JETBRAINS_MARKETPLACE_PUBLISH_TOKEN") + } + + println("Plugin Marketplace Token: ${pluginMarketplaceToken.take(5)}*****") + val instance = PluginRepositoryFactory.create( "https://plugins.jetbrains.com", - project.property("PUBLISH_TOKEN").toString() + pluginMarketplaceToken ) - // first upload - // instance.uploader.uploadNewPlugin(pluginZip.outputs.files.singleFile, listOf("toolbox", "gateway"), LicenseUrl.APACHE_2_0, ProductFamily.TOOLBOX) - - // subsequent updates - instance.uploader.upload(extension.id, pluginZip.outputs.files.singleFile) + if (extension.version == "0.1.0") { + instance.uploader.uploadNewPlugin( + pluginZip.outputs.files.singleFile, + listOf("toolbox", "gateway"), // do not change + LicenseUrl.MIT, // choose wisely + ProductFamily.TOOLBOX, // do not change + extension.meta.vendor, // do not change + isHidden = true + ) + } else { + // !!! subsequent updates !!! + instance.uploader.uploadUpdateByXmlIdAndFamily( + extension.id, // do not change + ProductFamily.TOOLBOX, // do not change + pluginZip.outputs.files.singleFile, // do not change + null, // do not change. Channels will be available later + "Bug fixes and improvements", + true + ) + } } } From 8ed38ab1bbe78083e465f155a6033696786b77f1 Mon Sep 17 00:00:00 2001 From: Faur Ioan-Aurel Date: Fri, 28 Mar 2025 00:44:46 +0200 Subject: [PATCH 2/2] impl: zip task like in the sample plugin - the existing pluginZip implementation which is now renamed to pluginPrettyZip is producing an artifact suited for manual local deployment. The structure differ from the sample in the following ways: - zip name is: coder-toolbox-0.1.0.zip instead of com.coder.toolbox-0.1.0.zip - the zip contains a root folder named com.coder.toolbox that can be easily deployed in Toolbox plugin location - with this patch, pluginZip is copying what the Toolbox sample does. --- build.gradle.kts | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/build.gradle.kts b/build.gradle.kts index f693646..ecfa952 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -155,7 +155,10 @@ fun CopySpec.fromCompileDependencies() { ) } -val pluginZip by tasks.creating(Zip::class) { +/** + * Useful when doing manual local install. + */ +val pluginPrettyZip by tasks.creating(Zip::class) { archiveBaseName.set(properties("name")) dependsOn(tasks.jar) dependsOn(tasks.getByName("generateLicenseReport")) @@ -164,6 +167,14 @@ val pluginZip by tasks.creating(Zip::class) { into(extension.id) // folder like com.coder.toolbox } +val pluginZip by tasks.creating(Zip::class) { + dependsOn(tasks.jar) + dependsOn(tasks.getByName("generateLicenseReport")) + + fromCompileDependencies() + archiveBaseName.set(extension.id) +} + tasks.register("cleanAll", Delete::class.java) { dependsOn(tasks.clean) delete(getPluginInstallDir()) pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy