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) }