From 51cce9746311c7f8caf3aa87b6aa23421db681ea Mon Sep 17 00:00:00 2001 From: Bryan Oltman Date: Wed, 22 May 2024 13:56:44 -0400 Subject: [PATCH] clean up shorebird.yaml update in flutter.groovy --- .../gradle/src/main/groovy/flutter.groovy | 39 +++++++++---------- 1 file changed, 19 insertions(+), 20 deletions(-) diff --git a/packages/flutter_tools/gradle/src/main/groovy/flutter.groovy b/packages/flutter_tools/gradle/src/main/groovy/flutter.groovy index c4d41b7b19534..64b9d69be4162 100644 --- a/packages/flutter_tools/gradle/src/main/groovy/flutter.groovy +++ b/packages/flutter_tools/gradle/src/main/groovy/flutter.groovy @@ -1332,33 +1332,32 @@ class FlutterPlugin implements Plugin { } Task copyFlutterAssetsTask = addFlutterDeps(variant) copyFlutterAssetsTask.doLast { - def content = ""; + def yaml = new Yaml() def outputDir = copyFlutterAssetsTask.destinationDir + + // Read the shorebird.yaml file into a map. def shorebirdYamlFile = new File("${outputDir}/flutter_assets/shorebird.yaml") + def shorebirdYamlData = yaml.load(shorebirdYamlFile.text) + + // Update the app_id to the correct flavor if one was provided. + if (variant.flavorName != null && !variant.flavorName.isEmpty()) { + shorebirdYamlData['app_id'] = shorebirdYamlData.flavors[variant.flavorName] + } + + // Remove any flavors. This is a no-op if the flavors key doesn't exist. + shorebirdYamlData.remove('flavors') + // Add a public key if one was provided via an env var. + // Ideally we'd have a way to pass the key as a parameter, but + // an env var was the easiest way to get this working. def shorebirdPublicKeyEnvVar = System.getenv('SHOREBIRD_PUBLIC_KEY') if (shorebirdPublicKeyEnvVar != null && !shorebirdPublicKeyEnvVar.isEmpty()) { - content += 'patch_public_key: ' + shorebirdPublicKeyEnvVar + '\n'; + shorebirdYamlData['patch_public_key'] = shorebirdPublicKeyEnvVar } - if (variant.flavorName != null && !variant.flavorName.isEmpty()) { - def flavor = variant.flavorName - def shorebirdYaml = new Yaml().load(shorebirdYamlFile.text) - def flavorAppId = shorebirdYaml['flavors'][flavor] - if (flavorAppId == null) { - throw new GradleException("Cannot find app_id for ${flavor} in shorebird.yaml") - } - content += 'app_id: ' + flavorAppId + '\n'; - if (shorebirdYaml.containsKey('base_url')) { - content += 'base_url: ' + shorebirdYaml['base_url'] + '\n'; - } - if (shorebirdYaml.containsKey('auto_update')) { - content += 'auto_update: ' + shorebirdYaml['auto_update'] + '\n'; - } - } - if (!content.isEmpty()) { - shorebirdYamlFile.write(content) - } + // Write the updated map back to the shorebird.yaml file. + def updatedYamlString = yaml.dumpAsMap(shorebirdYamlData) + shorebirdYamlFile.write(updatedYamlString) } def variantOutput = variant.outputs.first() def processResources = variantOutput.hasProperty(propProcessResourcesProvider) ?