OPENIDE #181 Add Lombok plugin as bundled

(cherry picked from commit 5c4f389a3d)
This commit is contained in:
Nikita Iarychenko
2025-05-15 11:59:32 +04:00
parent 6de2d7338e
commit 855fbe4bbb
3 changed files with 28 additions and 2 deletions

View File

@@ -28,7 +28,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 {

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>

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
@@ -29,16 +30,40 @@ 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<Path> {
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)