fun detectLocalJdkBuilds()

in src/main/kotlin/com/jetbrains/plugin/jtreg/configuration/SdkUtils.kt [55:98]


    fun detectLocalJdkBuilds(project: Project) {
        val buildDir = getBuildDir(project) ?: return
        if (!buildDir.exists()) return

        val topDirs = Files.walk(buildDir, 1)
            .filter { it.isDirectory() }
            .map { it.resolve("jdk") }
            .filter { it.exists() }
            .toList()

        topDirs.forEach {
            val releaseFilePath = it.resolve("release")
            if (!releaseFilePath.exists()) return@forEach
            if (!it.resolve("bin/java").exists()) return@forEach
            if (!it.resolve("bin/javac").exists()) return@forEach
            val name = "Local build ${it.parent.fileName}"
            val version = getVersion(releaseFilePath, it.parent.fileName.toString())

            val homePath = it.toString()
            val existingJdk = ProjectJdkTable.getInstance().allJdks.firstOrNull { sdk -> sdk.homePath == homePath }
            existingJdk?.let {
                if (existingJdk.versionString == version && existingJdk.name == name) {
                    return@forEach
                } else {
                    existingJdk.sdkModificator.name = name
                    existingJdk.sdkModificator.versionString = version
                    val newSdk = createLocalJdk(name, version, homePath)
                    WriteAction.runAndWait<RuntimeException> {
                        ProjectJdkTable.getInstance().removeJdk(existingJdk)
                        ProjectJdkTable.getInstance().addJdk(newSdk)
                        JavaSdk.getInstance().setupSdkPaths(newSdk)
                    }
                }
            } ?: run {
                WriteAction.runAndWait<RuntimeException> {
                    val similarNamesCount = ProjectJdkTable.getInstance().allJdks.count { sdk -> sdk.name.startsWith(name) }
                    val sdkName = if (similarNamesCount <= 1) name else "$name (${similarNamesCount})"
                    val sdk = createLocalJdk(sdkName, version, homePath)
                    ProjectJdkTable.getInstance().addJdk(sdk)
                    JavaSdk.getInstance().setupSdkPaths(sdk)
                }
            }
        }
    }