small fixes

This commit is contained in:
Sergey Vlasenko 2024-04-02 18:13:23 +03:00
parent bf5fae6b04
commit c3a940255c
1 changed files with 21 additions and 9 deletions

View File

@ -33,27 +33,39 @@ class ApiModelsDependencyResolver(
}
fun getDependenciesFromFiles(files: Collection<File>): Set<File> =
files.fold(setOf()) { dependencies, file ->
dependencies + getFileDependencies(file)
files.fold(setOf()) { foundDependencies, file ->
val newDependencies = getFileDependencies(file)
if (newDependencies.isEmpty()) {
foundDependencies
} else {
foundDependencies + getFileDependencies(file)
}
}
private fun getFileDependencies(file: File): Set<File> {
if (handledFiles.contains(file)) {
private fun getFileDependencies(sourceFile: File): Set<File> {
if (handledFiles.contains(sourceFile)) {
return emptySet()
}
handledFiles.add(file)
handledFiles.add(sourceFile)
val json = JsonSlurper().parse(file) as Map<String, Any?>
val json = JsonSlurper().parse(sourceFile) as Map<String, Any?>
val files = fileParser.getAllTypeNamesFromJson(json)
.map { type ->
modelTypes[type]
?: throw IllegalArgumentException("Couldn't resolve $type in ${file.name}")
?: throw IllegalArgumentException("Couldn't resolve $type in ${sourceFile.name}")
}
.toSet()
return files.fold(files) { dependencies, myFile ->
dependencies + getFileDependencies(myFile)
return files.fold(files) { foundDependencies, file ->
val newDependencies = getFileDependencies(file)
if (newDependencies.isEmpty()) {
foundDependencies
} else {
foundDependencies + newDependencies
}
}
}
}