From 2e59fdfb0a1f5abddd2afea3fb4804084797eb4e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eligio=20Mari=C3=B1o?= <22875166+gmeligio@users.noreply.github.com> Date: Sat, 15 Feb 2025 17:16:05 +0100 Subject: [PATCH] refactor: migrate Android version update script to Kotlin DSL and remove Groovy version (#288) * refactor: migrate Android version update script to Kotlin DSL and remove Groovy version * fix: correct file extension for Android version update script in workflows * docs: restore comment --- .github/workflows/build.yml | 2 +- .../workflows/update_flutter_dependencies.yml | 2 +- script/updateAndroidVersions.gradle | 35 ------------------ script/updateAndroidVersions.gradle.kts | 36 +++++++++++++++++++ 4 files changed, 38 insertions(+), 37 deletions(-) delete mode 100644 script/updateAndroidVersions.gradle create mode 100644 script/updateAndroidVersions.gradle.kts diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index fbd0b9e..de93ee7 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -189,7 +189,7 @@ jobs: - name: Update default Android platform versions in Flutter working-directory: test_app/android run: | - cat ../../script/updateAndroidVersions.gradle >> app/build.gradle + cat ../../script/updateAndroidVersions.gradle.kts >> app/build.gradle.kts ./gradlew --warning-mode all updateAndroidVersions - name: Setup Cue for JSON validation diff --git a/.github/workflows/update_flutter_dependencies.yml b/.github/workflows/update_flutter_dependencies.yml index 5a6b7ad..551ce76 100644 --- a/.github/workflows/update_flutter_dependencies.yml +++ b/.github/workflows/update_flutter_dependencies.yml @@ -66,7 +66,7 @@ jobs: - name: Update default Android platform versions in Flutter working-directory: test_app/android run: | - cat ../../script/updateAndroidVersions.gradle >> app/build.gradle + cat ../../script/updateAndroidVersions.gradle.kts >> app/build.gradle.kts ./gradlew --warning-mode all updateAndroidVersions - name: Clean test application diff --git a/script/updateAndroidVersions.gradle b/script/updateAndroidVersions.gradle deleted file mode 100644 index 4920ccc..0000000 --- a/script/updateAndroidVersions.gradle +++ /dev/null @@ -1,35 +0,0 @@ -// Snippet to include at the end of android/app/build.gradle -import groovy.json.JsonSlurper -import groovy.json.JsonOutput - -tasks.register('updateAndroidVersions') { - doLast { - final jsonFile = new File('../../config/version.json') - final resultJsonMap = new JsonSlurper().parseText(jsonFile.text) - - final rawPlatformVersions = [ - flutter.targetSdkVersion, - flutter.compileSdkVersion - ] - - final platformVersions = rawPlatformVersions.unique() - - final newJsonMap = [ - android :[ - platforms: platformVersions.collect { - [version: it] - }, - gradle: [version: gradle.gradleVersion] - ] - ] - - resultJsonMap.android.putAll(newJsonMap.android) - - println resultJsonMap - - final jsonStr = JsonOutput.toJson(resultJsonMap) - final prettyStr = JsonOutput.prettyPrint(jsonStr) - - jsonFile.write("${prettyStr}\n") - } -} diff --git a/script/updateAndroidVersions.gradle.kts b/script/updateAndroidVersions.gradle.kts new file mode 100644 index 0000000..a6bf649 --- /dev/null +++ b/script/updateAndroidVersions.gradle.kts @@ -0,0 +1,36 @@ +// Snippet to include at the end of android/app/build.gradle.kts + +tasks.register("updateAndroidVersions") { + doLast { + val jsonFile = File("../../config/version.json") + + // Parse existing JSON file + val resultJsonMap = groovy.json.JsonSlurper().parseText(jsonFile.readText()) as MutableMap + + // Get unique platform versions + val platformVersions = listOf( + flutter.targetSdkVersion, + flutter.compileSdkVersion + ).distinct() + + // Create new Android version data + val newJsonMap = mapOf( + "platforms" to platformVersions.map { + mapOf("version" to it) + }, + "gradle" to mapOf("version" to gradle.gradleVersion) + ) + + // Merge new values into the existing JSON structure + (resultJsonMap["android"] as? MutableMap)?.putAll(newJsonMap) + + // Format JSON with pretty printing + val jsonStr = groovy.json.JsonOutput.toJson(resultJsonMap) + val prettyStr = groovy.json.JsonOutput.prettyPrint(jsonStr) + + println(prettyStr) + + // Write updated JSON back to the file + jsonFile.writeText("$prettyStr\n") + } +}