in src/main/kotlin/org/jetbrains/tinygoplugin/sdk/TinyGoSdkChooserCombo.kt [60:90]
override fun discoverVersions(
os: String,
arch: String,
includeAll: Boolean,
progressIndicator: ProgressIndicator,
versionConsumer: Consumer<MutableCollection<String>>,
): Boolean {
val tinyGoReleasesUrl = "https://api.github.com/repos/$TINYGO_GITHUB/releases"
val request = HttpRequests.request(tinyGoReleasesUrl)
@Suppress("SwallowedException")
try {
val response = request.readString(progressIndicator)
val objectMapper = ObjectMapper()
val releases = objectMapper.readTree(response)
if (!releases.isArray) {
return false
}
val versions = releases.asSequence().filter { node ->
node["assets"].asSequence().filter { asset ->
val emulatedArch = osManager.emulatedArch(arch)
asset["name"].textValue().matches(Regex(".*[.]($os-($arch|$emulatedArch))[.](tar.gz|zip|deb)"))
}.any()
}.map { node ->
node["tag_name"].textValue()
}.distinct().map { it.substring(1) }.sorted().toMutableList()
versionConsumer.accept(versions)
} catch (e: IOException) {
return false
}
return true
}