From 4786bef41372efb9b1d9ead0ff41b12589166292 Mon Sep 17 00:00:00 2001 From: Bryan Oltman Date: Tue, 19 Mar 2024 13:56:41 -0400 Subject: [PATCH] chore(shorebird_cli): remove deprecated `flutter versions use` command (#1802) --- .../versions/flutter_versions_command.dart | 1 - .../flutter_versions_use_command.dart | 93 --------- .../commands/flutter/versions/versions.dart | 1 - .../flutter_versions_use_command_test.dart | 179 ------------------ 4 files changed, 274 deletions(-) delete mode 100644 packages/shorebird_cli/lib/src/commands/flutter/versions/flutter_versions_use_command.dart delete mode 100644 packages/shorebird_cli/test/src/commands/flutter/versions/flutter_versions_use_command_test.dart diff --git a/packages/shorebird_cli/lib/src/commands/flutter/versions/flutter_versions_command.dart b/packages/shorebird_cli/lib/src/commands/flutter/versions/flutter_versions_command.dart index b8cdbb53..f4a3361b 100644 --- a/packages/shorebird_cli/lib/src/commands/flutter/versions/flutter_versions_command.dart +++ b/packages/shorebird_cli/lib/src/commands/flutter/versions/flutter_versions_command.dart @@ -9,7 +9,6 @@ class FlutterVersionsCommand extends ShorebirdCommand { /// {@macro flutter_versions_command} FlutterVersionsCommand() { addSubcommand(FlutterVersionsListCommand()); - addSubcommand(FlutterVersionsUseCommand()); } @override diff --git a/packages/shorebird_cli/lib/src/commands/flutter/versions/flutter_versions_use_command.dart b/packages/shorebird_cli/lib/src/commands/flutter/versions/flutter_versions_use_command.dart deleted file mode 100644 index c3610875..00000000 --- a/packages/shorebird_cli/lib/src/commands/flutter/versions/flutter_versions_use_command.dart +++ /dev/null @@ -1,93 +0,0 @@ -import 'package:mason_logger/mason_logger.dart'; -import 'package:shorebird_cli/src/command.dart'; -import 'package:shorebird_cli/src/logger.dart'; -import 'package:shorebird_cli/src/shorebird_flutter.dart'; - -/// {@template flutter_versions_use_command} -/// `shorebird flutter versions use` -/// Use a different Flutter version. -/// {@endtemplate} -class FlutterVersionsUseCommand extends ShorebirdCommand { - /// {@macro flutter_versions_use_command} - FlutterVersionsUseCommand(); - - static final RegExp _shaRegExp = RegExp(r'\b([a-f0-9]{40})\b'); - - @override - String get description => 'Use a different Flutter version.'; - - @override - String get name => 'use'; - - @override - Future run() async { - logger.warn( - ''' -This command has been deprecated and will be removed in the next major version. -Please use: "shorebird release --flutter-version " instead. -''', - ); - - if (results.rest.isEmpty) { - logger.err( - ''' -No version specified. -Usage: shorebird flutter versions use -Use `shorebird flutter versions list` to list available versions.''', - ); - return ExitCode.usage.code; - } - - if (results.rest.length > 1) { - logger.err(''' -Too many arguments. -Usage: shorebird flutter versions use '''); - return ExitCode.usage.code; - } - - final version = results.rest.first; - if (_shaRegExp.hasMatch(version)) { - try { - await shorebirdFlutter.useRevision(revision: version); - } catch (_) { - return ExitCode.software.code; - } - - return ExitCode.success.code; - } - - final fetchFlutterVersionsProgress = logger.progress( - 'Fetching Flutter versions', - ); - final List versions; - try { - versions = await shorebirdFlutter.getVersions(); - fetchFlutterVersionsProgress.complete(); - } catch (error) { - fetchFlutterVersionsProgress.fail('Failed to fetch Flutter versions.'); - logger.err('$error'); - return ExitCode.software.code; - } - - if (!versions.contains(version)) { - final openIssueLink = link( - uri: Uri.parse( - 'https://github.com/shorebirdtech/shorebird/issues/new?assignees=&labels=feature&projects=&template=feature_request.md&title=feat%3A+', - ), - message: 'open an issue', - ); - logger.err(''' -Version $version not found. Please $openIssueLink to request a new version. -Use `shorebird flutter versions list` to list available versions.'''); - return ExitCode.software.code; - } - - try { - await shorebirdFlutter.useVersion(version: version); - } catch (_) { - return ExitCode.software.code; - } - - return ExitCode.success.code; - } -} diff --git a/packages/shorebird_cli/lib/src/commands/flutter/versions/versions.dart b/packages/shorebird_cli/lib/src/commands/flutter/versions/versions.dart index e8bf0108..962c6c02 100644 --- a/packages/shorebird_cli/lib/src/commands/flutter/versions/versions.dart +++ b/packages/shorebird_cli/lib/src/commands/flutter/versions/versions.dart @@ -1,3 +1,2 @@ export 'flutter_versions_command.dart'; export 'flutter_versions_list_command.dart'; -export 'flutter_versions_use_command.dart'; diff --git a/packages/shorebird_cli/test/src/commands/flutter/versions/flutter_versions_use_command_test.dart b/packages/shorebird_cli/test/src/commands/flutter/versions/flutter_versions_use_command_test.dart deleted file mode 100644 index 1933635e..00000000 --- a/packages/shorebird_cli/test/src/commands/flutter/versions/flutter_versions_use_command_test.dart +++ /dev/null @@ -1,179 +0,0 @@ -import 'package:args/args.dart'; -import 'package:mason_logger/mason_logger.dart'; -import 'package:mocktail/mocktail.dart'; -import 'package:scoped/scoped.dart'; -import 'package:shorebird_cli/src/commands/commands.dart'; -import 'package:shorebird_cli/src/logger.dart'; -import 'package:shorebird_cli/src/shorebird_flutter.dart'; -import 'package:test/test.dart'; - -import '../../../mocks.dart'; - -void main() { - group(FlutterVersionsUseCommand, () { - const version = '1.2.3'; - const revision = '0fc414cbc33ee017ad509671009e8b242539ea16'; - - late ArgResults argResults; - late Progress progress; - late Logger logger; - late ShorebirdFlutter shorebirdFlutter; - late FlutterVersionsUseCommand command; - - R runWithOverrides(R Function() body) { - return runScoped( - body, - values: { - loggerRef.overrideWith(() => logger), - shorebirdFlutterRef.overrideWith(() => shorebirdFlutter), - }, - ); - } - - setUp(() { - argResults = MockArgResults(); - when(() => argResults.rest).thenReturn([version]); - progress = MockProgress(); - logger = MockLogger(); - shorebirdFlutter = MockShorebirdFlutter(); - command = runWithOverrides(FlutterVersionsUseCommand.new) - ..testArgResults = argResults; - - when(() => logger.progress(any())).thenReturn(progress); - when( - () => shorebirdFlutter.getVersions(), - ).thenAnswer((_) async => [version]); - when( - () => shorebirdFlutter.useVersion(version: any(named: 'version')), - ).thenAnswer((_) async {}); - when( - () => shorebirdFlutter.useRevision(revision: any(named: 'revision')), - ).thenAnswer((_) async {}); - }); - - test('has correct name and description', () { - expect(command.name, equals('use')); - expect(command.description, equals('Use a different Flutter version.')); - }); - - test('logs deprecation warning', () async { - await runWithOverrides(command.run); - verify( - () => logger.warn( - ''' -This command has been deprecated and will be removed in the next major version. -Please use: "shorebird release --flutter-version " instead. -''', - ), - ).called(1); - }); - - test('exits with code 64 when no version is specified', () async { - when(() => argResults.rest).thenReturn([]); - await expectLater( - runWithOverrides(command.run), - completion(equals(ExitCode.usage.code)), - ); - verify( - () => logger.err(''' -No version specified. -Usage: shorebird flutter versions use -Use `shorebird flutter versions list` to list available versions.'''), - ).called(1); - }); - - test('exits with code 64 when too many args are provided', () async { - when(() => argResults.rest).thenReturn([version, 'foo']); - await expectLater( - runWithOverrides(command.run), - completion(equals(ExitCode.usage.code)), - ); - verify( - () => logger.err(''' -Too many arguments. -Usage: shorebird flutter versions use '''), - ).called(1); - }); - - test('exits with code 70 when unable to fetch versions', () async { - when(() => shorebirdFlutter.getVersions()).thenThrow('error'); - await expectLater( - runWithOverrides(command.run), - completion(equals(ExitCode.software.code)), - ); - verifyInOrder([ - () => logger.progress('Fetching Flutter versions'), - () => progress.fail('Failed to fetch Flutter versions.'), - () => logger.err('error'), - ]); - }); - - test('exits with code 70 when version is not found', () async { - when(() => shorebirdFlutter.getVersions()).thenAnswer( - (_) async => ['other-version'], - ); - await expectLater( - runWithOverrides(command.run), - completion(equals(ExitCode.software.code)), - ); - final openIssueLink = link( - uri: Uri.parse( - 'https://github.com/shorebirdtech/shorebird/issues/new?assignees=&labels=feature&projects=&template=feature_request.md&title=feat%3A+', - ), - message: 'open an issue', - ); - verifyInOrder([ - () => logger.progress('Fetching Flutter versions'), - () => progress.complete(), - () => logger.err(''' -Version $version not found. Please $openIssueLink to request a new version. -Use `shorebird flutter versions list` to list available versions.'''), - ]); - }); - - test('exits with code 70 when unable to install version', () async { - when( - () => shorebirdFlutter.useVersion(version: any(named: 'version')), - ).thenThrow('error'); - await expectLater( - runWithOverrides(command.run), - completion(equals(ExitCode.software.code)), - ); - verifyInOrder([ - () => logger.progress('Fetching Flutter versions'), - () => progress.complete(), - ]); - }); - - test('exits with code 70 when unable to install revision', () async { - when(() => argResults.rest).thenReturn([revision]); - when( - () => shorebirdFlutter.useRevision(revision: any(named: 'revision')), - ).thenThrow('error'); - await expectLater( - runWithOverrides(command.run), - completion(equals(ExitCode.software.code)), - ); - }); - - test('exits with code 0 when version install succeeds', () async { - await expectLater( - runWithOverrides(command.run), - completion(equals(ExitCode.success.code)), - ); - verifyInOrder([ - () => logger.progress('Fetching Flutter versions'), - () => shorebirdFlutter.getVersions(), - () => progress.complete(), - ]); - }); - - test('exits with code 0 when revision install succeeds', () async { - when(() => argResults.rest).thenReturn([revision]); - await expectLater( - runWithOverrides(command.run), - completion(equals(ExitCode.success.code)), - ); - }); - }); -}