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
2025-05-15 11:59:32 +04:00
parent 20df33e04b
commit 979c5d8a04
3 changed files with 28 additions and 2 deletions

View File

@@ -44,7 +44,7 @@ object OpenSourceCommunityInstallersBuildTarget {
fun main(args: Array<String>) {
runBlocking(Dispatchers.Default) {
val context = createCommunityBuildContext(OPTIONS.copy(buildStepsToSkip = OPTIONS.buildStepsToSkip + BUILD_STEPS_DISABLED_FOR_GITHUB_ACTIONS))
OpenIdePluginBundler.bundleAmplicodePlugin(context)
OpenIdePluginBundler.bundlePlugins(context)
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)