helpers/feature-freeze-utils/shared-utils.main.kts (40 lines of code) (raw):

@file:Repository("https://repo.maven.apache.org/maven2/") @file:DependsOn("com.squareup.okhttp3:okhttp:4.12.0") @file:DependsOn("com.fasterxml.jackson.core:jackson-databind:2.17.2") @file:DependsOn("com.fasterxml.jackson.module:jackson-module-kotlin:2.17.2") import com.fasterxml.jackson.databind.DeserializationFeature import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper import okhttp3.OkHttpClient import okhttp3.Request import java.io.File // Read version from gradle.properties fun getPluginVersion(): String? { val gradlePropertiesFile = File("gradle.properties") return gradlePropertiesFile.readLines().firstOrNull { it.trim().startsWith("pluginVersion=") }?.substringAfter("=")?.trim() } fun updatePluginVersion(version: String) { val gradlePropertiesFile = File("gradle.properties") val lines = gradlePropertiesFile.readLines().toMutableList() val pluginVersionLineIndex = lines.indexOfFirst { it.trimStart().startsWith("pluginVersion=") } if (pluginVersionLineIndex >= 0) { val prefix = lines[pluginVersionLineIndex].substringBefore("=") lines[pluginVersionLineIndex] = "$prefix=$version" } else { lines.add("pluginVersion=$version") } gradlePropertiesFile.writeText(lines.joinToString("\n")) } val client = OkHttpClient() val mapper: ObjectMapper = jacksonObjectMapper() .configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false) inline fun <reified T> Request.sendRequest(): T? { client.newCall(this).execute().use { response -> val responseBody = response.body?.string() if (!response.isSuccessful) { println("❌ Error: ${response.code} - $responseBody") error("Failed to fetch data (HTTP ${response.code}): $responseBody") } return mapper.readValue(responseBody, T::class.java) } }