diff --git a/plugins/kotlin/util/project-model-updater/src/org/jetbrains/tools/model/updater/Main.kt b/plugins/kotlin/util/project-model-updater/src/org/jetbrains/tools/model/updater/Main.kt index 857e25f63782..c47206c4f97f 100644 --- a/plugins/kotlin/util/project-model-updater/src/org/jetbrains/tools/model/updater/Main.kt +++ b/plugins/kotlin/util/project-model-updater/src/org/jetbrains/tools/model/updater/Main.kt @@ -100,19 +100,28 @@ fun main(args: Array) { updateCoopRunConfiguration(monorepoRoot, communityRoot) } -private fun regenerateProjectLibraries(dotIdea: Path, libraries: List, resolverSettings: JpsResolverSettings) { +private fun regenerateProjectLibraries(dotIdea: Path, newLibraries: List, resolverSettings: JpsResolverSettings) { val librariesDir = dotIdea.resolve("libraries") - for (it in librariesDir.listDirectoryEntries("kotlinc_*")) { - println("Removing $it") - it.deleteIfExists() - } + val oldLibraries = librariesDir.listDirectoryEntries("kotlinc_*").toMutableSet() - for (library in libraries) { + for (library in newLibraries) { val libraryFileName = library.name.replace("\\W".toRegex(), "_") + ".xml" val xmlFile = librariesDir.resolve(libraryFileName) - println("Writing $xmlFile") + val isRegeneration = oldLibraries.remove(xmlFile) + if (isRegeneration) { + println("Rewriting $xmlFile") + } else { + println("Writing $xmlFile") + } + xmlFile.writeText(library.render(resolverSettings)) } + + // Drop redundant libraries + for (redundantLibrary in oldLibraries) { + println("Removing $redundantLibrary") + redundantLibrary.deleteExisting() + } } private fun updateCoopRunConfiguration(monorepoRoot: Path?, communityRoot: Path) {