diff --git a/plugins/pill/pill-importer/src/JpsCompatiblePluginTasks.kt b/plugins/pill/pill-importer/src/JpsCompatiblePluginTasks.kt index fed925ba443..5e4e52b054e 100644 --- a/plugins/pill/pill-importer/src/JpsCompatiblePluginTasks.kt +++ b/plugins/pill/pill-importer/src/JpsCompatiblePluginTasks.kt @@ -86,7 +86,8 @@ class JpsCompatiblePluginTasks(private val rootProject: Project, private val pla rootProject.logger.lifecycle("Pill: Setting up project for the '${variant.name.toLowerCase()}' variant...") - val parserContext = ParserContext(variant) + val modulePrefix = System.getProperty("pill.module.prefix", "") + val parserContext = ParserContext(variant, modulePrefix) val dependencyPatcher = DependencyPatcher(rootProject) val dependencyMappers = listOf(dependencyPatcher, ::attachPlatformSources, ::attachAsmSources) diff --git a/plugins/pill/pill-importer/src/parser.kt b/plugins/pill/pill-importer/src/parser.kt index fd546b8e26e..1aa08a1475e 100644 --- a/plugins/pill/pill-importer/src/parser.kt +++ b/plugins/pill/pill-importer/src/parser.kt @@ -22,7 +22,7 @@ import org.jetbrains.kotlin.pill.PSourceRoot.* import org.jetbrains.kotlin.pill.PillExtensionMirror.* import java.io.File -class ParserContext(val variant: Variant) +class ParserContext(val variant: Variant, val modulePrefix: String) typealias OutputDir = String typealias GradleProjectPath = String @@ -107,7 +107,7 @@ data class PLibrary( } } -fun parse(project: Project, context: ParserContext): PProject { +fun parse(project: Project, context: ParserContext): PProject = with(context) { if (project != project.rootProject) { error("$project is not a root project") } @@ -186,11 +186,11 @@ private fun makePath(project: Project, sourceSetName: String): GradleProjectPath return project.path + "/" + sourceSetName } -private fun parseModules(project: Project, excludedProjects: List): List { +private fun ParserContext.parseModules(project: Project, excludedProjects: List): List { val modules = mutableListOf() fun getModuleFile(name: String): File { - val relativePath = File(project.projectDir, "$name.iml").toRelativeString(project.rootProject.projectDir) + val relativePath = File(project.projectDir, "$modulePrefix$name.iml").toRelativeString(project.rootProject.projectDir) return File(project.rootProject.projectDir, ".idea/modules/$relativePath") } @@ -226,7 +226,7 @@ private fun parseModules(project: Project, excludedProjects: List): Lis val name = project.pillModuleName + "." + sourceSet.name modules += PModule( - name = name, + name = modulePrefix + name, path = makePath(project, sourceSet.name), forTests = sourceSet.forTests, rootDirectory = sourceRoots.first().directory, @@ -240,12 +240,12 @@ private fun parseModules(project: Project, excludedProjects: List): Lis } val mainModuleFileRelativePath = when (project) { - project.rootProject -> File(project.rootProject.projectDir, project.rootProject.name + ".iml") + project.rootProject -> File(project.rootProject.projectDir, modulePrefix + project.rootProject.name + ".iml") else -> getModuleFile(project.pillModuleName) } modules += PModule( - name = project.pillModuleName, + name = modulePrefix + project.pillModuleName, path = project.path, forTests = false, rootDirectory = project.projectDir,