in rider/src/main/kotlin/com/jetbrains/aspire/rider/orchestration/BaseOrchestrationHandler.kt [23:62]
override suspend fun generateServiceDefaultsAndModifyProjects(
projectEntities: List<ProjectModelEntity>,
project: Project
): Boolean {
if (projectEntities.isEmpty()) return false
LOG.debug { "Orchestrating ServiceDefaults for ${projectEntities.size} projects" }
val existingServiceDefaultsPath = findExistingServiceDefaults(project)
val serviceDefaultsPath = if (existingServiceDefaultsPath != null) {
LOG.trace { "Using the existing ServiceDefaults project: ${existingServiceDefaultsPath.absolutePathString()}" }
existingServiceDefaultsPath
} else {
LOG.trace { "Generating a new ServiceDefaults project" }
generateServiceDefaults(project)
}
if (serviceDefaultsPath == null) {
LOG.warn("Unable to find or generate ServiceDefaults project")
return false
}
val projectFilePaths = projectEntities.mapNotNull { it.url?.toPath() }
val referenceResult = referenceSharedProject(project, serviceDefaultsPath, projectFilePaths)
?: return false
val projectsWithReference = referenceResult.projectFilePathsWithReference.map { path ->
val projectPath = path.toNioPath()
val entity = projectEntities.firstOrNull { entity -> entity.url?.toPath() == projectPath }
projectPath to entity
}
val modified = AspireServiceDefaultsModificationService
.getInstance(project)
.insertAspireDefaultMethodsIntoProjects(projectsWithReference)
LOG.debug { "ServiceDefaults orchestration completed. Modified: $modified" }
return modified
}