From 803bc92b7191e257e5d7447b4ae8421de1addcc1 Mon Sep 17 00:00:00 2001 From: Felix Angelov Date: Thu, 4 May 2023 17:01:37 -0500 Subject: [PATCH] feat(flutter_tools): upgrade flutter.gradle to update shorebird.yaml --- packages/flutter_tools/gradle/flutter.gradle | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/packages/flutter_tools/gradle/flutter.gradle b/packages/flutter_tools/gradle/flutter.gradle index 8354a6f229398..e4f4e07d9d7e9 100644 --- a/packages/flutter_tools/gradle/flutter.gradle +++ b/packages/flutter_tools/gradle/flutter.gradle @@ -26,6 +26,7 @@ import org.gradle.api.tasks.TaskAction import org.gradle.api.tasks.bundling.Jar import org.gradle.internal.os.OperatingSystem import org.gradle.util.VersionNumber +import org.yaml.snakeyaml.Yaml /** For apps only. Provides the flutter extension used in app/build.gradle. */ class FlutterExtension { @@ -63,6 +64,7 @@ buildscript { dependencies { /* When bumping, also update ndkVersion above. */ classpath 'com.android.tools.build:gradle:7.3.0' + classpath group: 'org.yaml', name: 'snakeyaml', version: '2.0' } } @@ -975,6 +977,23 @@ class FlutterPlugin implements Plugin { return } Task copyFlutterAssetsTask = addFlutterDeps(variant) + copyFlutterAssetsTask.doLast { + if (variant.flavorName != null && !variant.flavorName.isEmpty()) { + def outputDir = copyFlutterAssetsTask.destinationDir + def shorebirdYamlFile = new File("${outputDir}/flutter_assets/shorebird.yaml") + def flavor = variant.flavorName + def shorebirdYaml = new Yaml().load(shorebirdYamlFile.text) + def flavorAppId = shorebirdYaml['app_id'][flavor] + if (flavorAppId == null) { + throw new GradleException("Cannot find app_id for ${flavor} in shorebird.yaml") + } + def content = 'app_id: ' + flavorAppId + '\n'; + if (shorebirdYaml.containsKey('base_url')) { + content += 'base_url: ' + shorebirdYaml['base_url'] + '\n'; + } + shorebirdYamlFile.write(content) + } + } def variantOutput = variant.outputs.first() def processResources = variantOutput.hasProperty("processResourcesProvider") ? variantOutput.processResourcesProvider.get() : variantOutput.processResources