suspend fun getLatestBazelVersion()

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
  }