From 4a025168273d8f55dfe089fa25ac4b75ce98276b Mon Sep 17 00:00:00 2001 From: Bryan Oltman Date: Fri, 9 Feb 2024 15:25:48 -0500 Subject: [PATCH] fix(shorebird_cli): disallow obfuscation for iOS releases (#1724) --- .../commands/release/release_ios_command.dart | 10 ++++++++++ .../release/release_ios_command_test.dart | 16 ++++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/packages/shorebird_cli/lib/src/commands/release/release_ios_command.dart b/packages/shorebird_cli/lib/src/commands/release/release_ios_command.dart index 0b721649..9bd46fb9 100644 --- a/packages/shorebird_cli/lib/src/commands/release/release_ios_command.dart +++ b/packages/shorebird_cli/lib/src/commands/release/release_ios_command.dart @@ -96,6 +96,16 @@ make smaller updates to your app. return e.exitCode.code; } + if (results.rest.contains('--obfuscate')) { + // Obfuscated releases break patching, so we don't support them. + // See https://github.com/shorebirdtech/shorebird/issues/1619 + logger + ..err('Shorebird does not currently support obfuscation on iOS.') + ..info( + '''We hope to support obfuscation in the future. We are tracking this work at ${link(uri: Uri.parse('https://github.com/shorebirdtech/shorebird/issues/1619'))}.'''); + return ExitCode.usage.code; + } + final codesign = results['codesign'] == true; if (!codesign) { logger diff --git a/packages/shorebird_cli/test/src/commands/release/release_ios_command_test.dart b/packages/shorebird_cli/test/src/commands/release/release_ios_command_test.dart index 3840c177..d8440335 100644 --- a/packages/shorebird_cli/test/src/commands/release/release_ios_command_test.dart +++ b/packages/shorebird_cli/test/src/commands/release/release_ios_command_test.dart @@ -343,6 +343,22 @@ flutter: ).called(1); }); + group('when obfuscate flag is passed', () { + setUp(() { + when(() => argResults.rest).thenReturn(['--obfuscate']); + }); + + test('prints error and exits with usage code', () async { + final exitCode = await runWithOverrides(command.run); + + expect(exitCode, equals(ExitCode.usage.code)); + verify( + () => logger + .err('Shorebird does not currently support obfuscation on iOS.'), + ).called(1); + }); + }); + group('when codesign is disabled', () { setUp(() { when(() => argResults['codesign']).thenReturn(false);