suspend fun insertAspireDefaultMethodsIntoProjects()

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
    }