diff --git a/build/src/OpenSourceCommunityInstallersBuildTarget.kt b/build/src/OpenSourceCommunityInstallersBuildTarget.kt
index a5ae6795e486..4021fa18542a 100644
--- a/build/src/OpenSourceCommunityInstallersBuildTarget.kt
+++ b/build/src/OpenSourceCommunityInstallersBuildTarget.kt
@@ -26,7 +26,7 @@ internal object OpenSourceCommunityInstallersBuildTarget {
runBlocking(Dispatchers.Default) {
val context = createCommunityBuildContext(options)
- OpenIdePluginBundler.bundleAmplicodePlugin(context)
+ OpenIdePluginBundler.bundlePlugins(context)
CompilationTasks.create(context).compileModules(moduleNames = null, includingTestsInModules = listOf("intellij.platform.jps.build.tests"))
buildDistributions(context)
spanBuilder("build standalone JPS").use {
diff --git a/openide/openide.iml b/openide/openide.iml
index 671c9ac2247e..b88c7309130b 100644
--- a/openide/openide.iml
+++ b/openide/openide.iml
@@ -13,5 +13,6 @@
+
\ No newline at end of file
diff --git a/openide/src/ru/openide/OpenIdePluginBundler.kt b/openide/src/ru/openide/OpenIdePluginBundler.kt
index 07a0c6372fdb..2ab3720be20a 100644
--- a/openide/src/ru/openide/OpenIdePluginBundler.kt
+++ b/openide/src/ru/openide/OpenIdePluginBundler.kt
@@ -14,6 +14,7 @@
package ru.openide
import com.intellij.openapi.util.JDOMUtil
+import com.intellij.util.Urls
import com.intellij.util.io.HttpRequests
import org.jdom.Element
import org.jetbrains.intellij.build.BuildContext
@@ -29,17 +30,41 @@ object OpenIdePluginBundler {
private const val PHYSICAL_PLUGINS_DIR = "build/bundled-plugins"
private const val AMPLICODE_URL = "https://amplicode.ru"
private const val AMPLICODE_MARKETPLACE_URL = "https://amplicode.ru/jetbrains-marketplace"
+ private const val PLUGINS_DOWNLOAD_URL = "https://plugins.openide.ru/pluginManager"
fun getBundlePluginPaths(context: BuildContext): List {
if (System.getProperty("without.bundle.plugins") != null) return emptyList()
val communityHomeDir = context.paths.communityHomeDir
return listOf(
Path.of("${communityHomeDir}/$DOWNLOADABLE_PLUGINS_DIR/amplicode"),
+ Path.of("${communityHomeDir}/$DOWNLOADABLE_PLUGINS_DIR/lombok"),
Path.of("${communityHomeDir}/$PHYSICAL_PLUGINS_DIR/ru_pack")
)
}
- fun bundleAmplicodePlugin(context: BuildContext) {
+ fun bundlePlugins(context: BuildContext) {
+ bundleLombokPluginFromMarketplace(context)
+ bundleAmplicodePlugin(context)
+ }
+
+ private fun bundleLombokPluginFromMarketplace(context: BuildContext) {
+ val parameters = hashMapOf(
+ "id" to "Lombook Plugin",
+ "build" to context.fullBuildNumber
+ )
+
+ val uri = Urls.newFromEncoded(PLUGINS_DOWNLOAD_URL)
+ .addParameters(parameters)
+ .toExternalForm()
+ .let(URI::create)
+
+ val archivePath = BuildDependenciesDownloader.downloadFileToCacheLocation(COMMUNITY_ROOT, uri)
+ val targetDir = context.paths.communityHomeDir.resolve("$DOWNLOADABLE_PLUGINS_DIR/lombok")
+ BuildDependenciesDownloader.extractFile(archivePath, targetDir, COMMUNITY_ROOT, BuildDependenciesExtractOptions.STRIP_ROOT)
+ }
+
+ // TODO: download amplicode from marketplace like lombok plugin
+ private fun bundleAmplicodePlugin(context: BuildContext) {
val majorVersion = context.buildNumber.substringBefore('.')
val uri = resolveAmplicodeUri(majorVersion)
val archivePath = BuildDependenciesDownloader.downloadFileToCacheLocation(COMMUNITY_ROOT, uri)