in rider/src/main/kotlin/com/jetbrains/aspire/rider/orchestration/AspireServiceDefaultsModificationService.kt [61:90]
suspend fun insertAspireDefaultMethodsIntoProjects(project: List<Pair<Path, ProjectModelEntity?>>): Boolean {
if (project.isEmpty()) return false
var methodsWereInserted = false
for ((projectFilePath, projectEntity) in project) {
val descriptor = projectEntity?.descriptor
val projectType = (descriptor as? RdProjectDescriptor)?.specificType
val isWebProject = projectType == RdProjectType.Web
val isMauiProject = projectType == RdProjectType.MAUI
val projectProgramFilePath =
if (!isMauiProject) projectFilePath.parent.resolve(PROGRAM_FILE)
else projectFilePath.parent.resolve(MAUI_PROGRAM_FILE)
if (!projectProgramFilePath.exists()) {
LOG.info("Unable to find Program.cs file for a project ${projectFilePath.name}")
continue
}
val projectProgramFile = VirtualFileManager.getInstance().findFileByNioPath(projectProgramFilePath)
if (projectProgramFile == null) {
LOG.warn("Unable to find Program.cs virtual file for a project ${projectFilePath.name}")
continue
}
val insertionResult = insertAspireDefaultMethodsIntoProgramFile(projectProgramFile, isWebProject, isMauiProject)
methodsWereInserted = methodsWereInserted || insertionResult
}
return methodsWereInserted
}