From 966e75adccc9713c073ff3059110a8a496045416 Mon Sep 17 00:00:00 2001 From: Eric Seidel Date: Thu, 7 May 2026 15:30:27 -0700 Subject: [PATCH] fix(cli): forward --flavor to flutter build aar and ios-framework (#3748) --- .../artifact_builder/artifact_builder.dart | 4 ++ .../src/commands/release/aar_releaser.dart | 1 + .../release/ios_framework_releaser.dart | 1 + .../artifact_builder_test.dart | 52 +++++++++++++++++++ .../commands/release/aar_releaser_test.dart | 33 ++++++++++++ .../release/ios_framework_releaser_test.dart | 29 +++++++++++ 6 files changed, 120 insertions(+) diff --git a/packages/shorebird_cli/lib/src/artifact_builder/artifact_builder.dart b/packages/shorebird_cli/lib/src/artifact_builder/artifact_builder.dart index dc22e30d..1f03580f 100644 --- a/packages/shorebird_cli/lib/src/artifact_builder/artifact_builder.dart +++ b/packages/shorebird_cli/lib/src/artifact_builder/artifact_builder.dart @@ -283,6 +283,7 @@ Reason: Exited with code $exitCode.''', /// after the build completes or fails. Future buildAar({ required String buildNumber, + String? flavor, Iterable? targetPlatforms, List args = const [], String? base64PublicKey, @@ -296,6 +297,7 @@ Reason: Exited with code $exitCode.''', '--no-debug', '--no-profile', '--build-number=$buildNumber', + if (flavor != null) '--flavor=$flavor', if (targetPlatformArgs != null) '--target-platform=$targetPlatformArgs', ...await _traceArgs('aar'), ...args, @@ -504,6 +506,7 @@ Reason: Exited with code $exitCode.''', /// Builds a release iOS framework (.xcframework) for the current project. Future buildIosFramework({ + String? flavor, List args = const [], String? base64PublicKey, }) async { @@ -522,6 +525,7 @@ Reason: Exited with code $exitCode.''', 'ios-framework', '--no-debug', '--no-profile', + if (flavor != null) '--flavor=$flavor', ...await _traceArgs('ios-framework'), ...args, ]; diff --git a/packages/shorebird_cli/lib/src/commands/release/aar_releaser.dart b/packages/shorebird_cli/lib/src/commands/release/aar_releaser.dart index db822f62..97b3563c 100644 --- a/packages/shorebird_cli/lib/src/commands/release/aar_releaser.dart +++ b/packages/shorebird_cli/lib/src/commands/release/aar_releaser.dart @@ -88,6 +88,7 @@ class AarReleaser extends Releaser { addObfuscationMapArgs(buildArgs); await artifactBuilder.buildAar( buildNumber: buildNumber, + flavor: flavor, targetPlatforms: architectures, args: buildArgs, base64PublicKey: base64PublicKey, diff --git a/packages/shorebird_cli/lib/src/commands/release/ios_framework_releaser.dart b/packages/shorebird_cli/lib/src/commands/release/ios_framework_releaser.dart index 19fdac9a..c3cef227 100644 --- a/packages/shorebird_cli/lib/src/commands/release/ios_framework_releaser.dart +++ b/packages/shorebird_cli/lib/src/commands/release/ios_framework_releaser.dart @@ -78,6 +78,7 @@ class IosFrameworkReleaser extends Releaser with AppleReleaserMixin { addSplitDebugInfoDefault(buildArgs); addObfuscationMapArgs(buildArgs); await artifactBuilder.buildIosFramework( + flavor: flavor, args: buildArgs, base64PublicKey: base64PublicKey, ); diff --git a/packages/shorebird_cli/test/src/artifact_builder/artifact_builder_test.dart b/packages/shorebird_cli/test/src/artifact_builder/artifact_builder_test.dart index 4a92381e..df7f6cc6 100644 --- a/packages/shorebird_cli/test/src/artifact_builder/artifact_builder_test.dart +++ b/packages/shorebird_cli/test/src/artifact_builder/artifact_builder_test.dart @@ -1005,6 +1005,33 @@ Either run `flutter pub get` manually, or follow the steps in ${cannotRunInVSCod ).called(1); }); + test( + 'forwards --flavor to flutter build when flavor is provided', + () async { + await runWithOverrides( + () => + builder.buildAar(buildNumber: buildNumber, flavor: 'internal'), + ); + + verify( + () => shorebirdProcess.stream( + 'flutter', + [ + 'build', + 'aar', + '--no-debug', + '--no-profile', + '--build-number=1.0', + '--flavor=internal', + ], + environment: any(named: 'environment'), + runInShell: false, + onStart: any(named: 'onStart'), + ), + ).called(1); + }, + ); + group('when base64PublicKey is not null', () { const base64PublicKey = 'base64PublicKey'; @@ -1873,6 +1900,31 @@ Reason: Exited with code 70.'''), ).called(1); }); + test( + 'forwards --flavor to flutter build when flavor is provided', + () async { + await runWithOverrides( + () => builder.buildIosFramework(flavor: 'internal'), + ); + + verify( + () => shorebirdProcess.stream( + 'flutter', + [ + 'build', + 'ios-framework', + '--no-debug', + '--no-profile', + '--flavor=internal', + ], + environment: any(named: 'environment'), + runInShell: false, + onStart: any(named: 'onStart'), + ), + ).called(1); + }, + ); + group('when base64PublicKey is not null', () { const base64PublicKey = 'base64PublicKey'; diff --git a/packages/shorebird_cli/test/src/commands/release/aar_releaser_test.dart b/packages/shorebird_cli/test/src/commands/release/aar_releaser_test.dart index e73b9655..9493a03c 100644 --- a/packages/shorebird_cli/test/src/commands/release/aar_releaser_test.dart +++ b/packages/shorebird_cli/test/src/commands/release/aar_releaser_test.dart @@ -374,6 +374,39 @@ void main() { ).called(1); }); + group('with flavor', () { + const flavor = 'internal'; + + setUp(() { + aarReleaser = AarReleaser( + argResults: argResults, + flavor: flavor, + target: null, + ); + when( + () => artifactBuilder.buildAar( + buildNumber: any(named: 'buildNumber'), + flavor: any(named: 'flavor'), + targetPlatforms: any(named: 'targetPlatforms'), + args: any(named: 'args'), + ), + ).thenAnswer((_) async => File('')); + }); + + test('forwards flavor to buildAar', () async { + await runWithOverrides(() => aarReleaser.buildReleaseArtifacts()); + + verify( + () => artifactBuilder.buildAar( + buildNumber: buildNumber, + flavor: flavor, + targetPlatforms: Arch.values.toSet(), + args: [], + ), + ).called(1); + }); + }); + group('when a patch signing key path is provided', () { const base64PublicKey = 'base64PublicKey'; diff --git a/packages/shorebird_cli/test/src/commands/release/ios_framework_releaser_test.dart b/packages/shorebird_cli/test/src/commands/release/ios_framework_releaser_test.dart index 49ddadab..b6ec9243 100644 --- a/packages/shorebird_cli/test/src/commands/release/ios_framework_releaser_test.dart +++ b/packages/shorebird_cli/test/src/commands/release/ios_framework_releaser_test.dart @@ -479,6 +479,35 @@ void main() { verify(() => artifactBuilder.buildIosFramework(args: [])).called(1); }); + group('with flavor', () { + const flavor = 'internal'; + + setUp(() { + iosFrameworkReleaser = IosFrameworkReleaser( + argResults: argResults, + flavor: flavor, + target: null, + ); + when( + () => artifactBuilder.buildIosFramework( + flavor: any(named: 'flavor'), + args: any(named: 'args'), + ), + ).thenAnswer( + (_) async => + AppleBuildResult(kernelFile: File('/path/to/app.dill')), + ); + }); + + test('forwards flavor to buildIosFramework', () async { + await runWithOverrides(iosFrameworkReleaser.buildReleaseArtifacts); + + verify( + () => artifactBuilder.buildIosFramework(flavor: flavor, args: []), + ).called(1); + }); + }); + group('when --obfuscate is passed', () { setUp(() { when(() => argResults['obfuscate']).thenReturn(true);