OPENIDE #181 Add Lombok plugin as bundled

(cherry picked from commit 5c4f389a3d)

(cherry picked from commit 855fbe4bbb)
(cherry picked from commit ebab730c23)
(cherry picked from commit 6ceea1a8f4)
This commit is contained in:
Nikita Iarychenko
2026-09-16 13:49:28 +04:00
parent 7572196d83
commit cdffabbbb0
3 changed files with 35 additions and 5 deletions
@@ -45,7 +45,7 @@ object OpenSourceCommunityInstallersBuildTarget {
runBlocking(Dispatchers.Default) {
val options = OPTIONS.copy(buildStepsToSkip = OPTIONS.buildStepsToSkip + BUILD_STEPS_DISABLED_FOR_GITHUB_ACTIONS)
val context = createCommunityBuildContext(options)
OpenIdePluginBundler.bundleAmplicodePlugin(context)
OpenIdePluginBundler.bundlePlugins(context)
context.compileModules(moduleNames = null, includingTestsInModules = listOf("intellij.platform.jps.build.tests"))
buildDistributions(context)
spanBuilder("build standalone JPS").use {
+1
View File
@@ -13,5 +13,6 @@
<orderEntry type="module" module-name="intellij.platform.buildScripts.downloader" />
<orderEntry type="module" module-name="intellij.platform.buildScripts" />
<orderEntry type="module" module-name="intellij.platform.util" />
<orderEntry type="module" module-name="intellij.platform.ide.util.io" />
</component>
</module>
+33 -4
View File
@@ -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
@@ -25,20 +26,48 @@ import java.nio.file.Path
object OpenIdePluginBundler {
private const val PLUGINS_DIR = "build/download/plugins"
private const val DOWNLOADABLE_PLUGINS_DIR = "build/download/plugins"
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<Path> {
val communityHomeDir = context.paths.communityHomeDir
return listOf(Path.of("${communityHomeDir}/$PLUGINS_DIR/amplicode"))
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)
val targetDir = context.paths.communityHomeDir.resolve("$PLUGINS_DIR/amplicode")
val targetDir = context.paths.communityHomeDir.resolve("$DOWNLOADABLE_PLUGINS_DIR/amplicode")
BuildDependenciesDownloader.extractFile(archivePath, targetDir, COMMUNITY_ROOT, BuildDependenciesExtractOptions.STRIP_ROOT)
}