From e8aba7b2fe03453b7f8eb39f87429740f558b01b Mon Sep 17 00:00:00 2001 From: Leonid Shalupov Date: Fri, 30 May 2025 11:57:44 +0200 Subject: [PATCH] build-scripts: method in JarPackager to get module output as source useful for replacing JPS artifacts usage GitOrigin-RevId: 8dd8eee59a9c6803a5a9b67b97346b2bb0adecc0 --- .../jetbrains/intellij/build/impl/JarPackager.kt | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/platform/build-scripts/src/org/jetbrains/intellij/build/impl/JarPackager.kt b/platform/build-scripts/src/org/jetbrains/intellij/build/impl/JarPackager.kt index 9ad02bbd436e..63804cdd16b4 100644 --- a/platform/build-scripts/src/org/jetbrains/intellij/build/impl/JarPackager.kt +++ b/platform/build-scripts/src/org/jetbrains/intellij/build/impl/JarPackager.kt @@ -20,6 +20,7 @@ import kotlinx.coroutines.coroutineScope import kotlinx.coroutines.launch import kotlinx.coroutines.withContext import org.jetbrains.intellij.build.BuildContext +import org.jetbrains.intellij.build.CompilationContext import org.jetbrains.intellij.build.DirSource import org.jetbrains.intellij.build.FrontendModuleFilter import org.jetbrains.intellij.build.InMemoryContentSource @@ -842,6 +843,19 @@ internal val commonModuleExcludes: List = FileSystems.getDefault(). ) } +suspend fun moduleOutputAsSource(context: CompilationContext, module: JpsModule, excludes: List = commonModuleExcludes): Source { + val moduleOutput = context.getModuleOutputDir(module) + check(Files.exists(moduleOutput)) { + "${module.name} module output directory doesn't exist: $moduleOutput" + } + return if (moduleOutput.toString().endsWith(".jar")) { + ZipSource(file = moduleOutput, distributionFileEntryProducer = null, filter = createModuleSourcesNamesFilter(excludes)) + } + else { + DirSource(dir = moduleOutput, excludes = excludes) + } +} + fun createModuleSourcesNamesFilter(excludes: List): (String) -> Boolean = { name -> val p = Path.of(name) excludes.none { it.matches(p) }