build-logic/src/main/kotlin/gradleNightlyVersion.kt (25 lines of code) (raw):
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
import kotlinx.serialization.Serializable
import kotlinx.serialization.json.Json
import java.net.URL
private const val GRADLE_NIGHTLY_JSON = "https://services.gradle.org/versions/nightly"
@Serializable
private data class GradleRelease(
val version: String,
val buildTime: String,
val current: Boolean,
val snapshot: Boolean,
val nightly: Boolean,
val releaseNightly: Boolean,
val activeRc: Boolean,
val rcFor: String,
val milestoneFor: String,
val broken: Boolean,
val downloadUrl: String,
val checksumUrl: String,
val wrapperChecksumUrl: String
)
private val json = Json { ignoreUnknownKeys = true }
fun gradleNightlyVersion() =
URL(GRADLE_NIGHTLY_JSON).readText().let {
json.decodeFromString<GradleRelease>(it)
}.version