in plugin-bazel/src/main/kotlin/org/jetbrains/bazel/languages/bazelversion/service/resolver/BazelGithubVersionResolver.kt [61:92]
suspend fun getLatestBazelVersion(project: Project, forkName: String): String? {
val response =
try {
HttpRequests
.request("https://api.github.com/repos/$forkName/$DEFAULT_REPO_NAME/releases")
.productNameAsUserAgent()
.readString()
} catch (_: IOException) {
return null
}
val cacheService = project.service<BazelGithubGlobalCacheService>()
val releases =
try {
githubGson.fromJson(response, Array<GithubReleaseResponse>::class.java)
} catch (_: JsonSyntaxException) {
return null
}
val comparator = compareBy<GithubReleaseResponse> { response -> response.tagName?.let { SemVer.parseFromText(it) } }
return releases
.toList()
.filter {
if (!cacheService.includePrelease && it.prerelease == true) {
return@filter false
}
if (!cacheService.includeReleaseCandidate && it.tagName?.contains("-rc") == true) {
return@filter false
}
true
}.maxWithOrNull(comparator)
?.tagName
}