in kotlin-script-runner-server/src/main/kotlin/jetbrains/buildServer/runner/kotlinBuildStep/KotlinScriptAvailableToolsFetcherImpl.kt [26:48]
override fun fetchAvailable(): FetchAvailableToolsResult {
val url = URL(TeamCityProperties.getProperty("teamcity.internal.runner.kotlinScript.toolsUrl", TOOL_REPOSITORY_URL))
try {
val json = IOGuard.allowNetworkCall<String, Exception> {
BufferedReader(InputStreamReader(url.openConnection().getInputStream(), StandardCharsets.UTF_8)).readText()
}
val releases = gson.fromJson(json, JsonArray::class.java)
val tools = releases
.filter { it.isJsonObject }
.map { it.asJsonObject["tag_name"] }
.filter { it != null }
.map { it.asString }
.filter { RELEASE_VERSION_PATTERN.matcher(it).matches() }
.map { it.substring(1) } // v1.4.31 => 1.4.31
.filter { VersionComparatorUtil.compare(it, "1.3.70") >= 0 }
.map { KotlinDowloadableToolVersion(it) }
return FetchAvailableToolsResult.createSuccessful(tools)
} catch (ex: Exception) {
val msg = "Failed to fetch available Kotlin compiler versions from ${url.toString()}"
SERVER_LOG.warnAndDebugDetails(msg, ex)
return FetchAvailableToolsResult.createError(msg, ex)
}
}