From 633725b1ad96f63984f351cd4dfedafef5fd354d Mon Sep 17 00:00:00 2001 From: Renan Araujo Date: Wed, 22 Mar 2023 12:26:07 +0000 Subject: [PATCH] feat: remove deprecated legacy syntax --- .github/workflows/e2e.yaml | 8 - .../commands/create/legacy/core_test.dart | 51 - .../commands/create/legacy/dart_cli_test.dart | 82 -- .../commands/create/legacy/dart_pkg_test.dart | 81 -- .../create/legacy/docs_site_test.dart | 57 -- .../create/legacy/flame_game_test.dart | 60 -- .../create/legacy/flutter_pkg_test.dart | 59 -- lib/src/command_runner.dart | 63 -- .../commands/create/commands/commands.dart | 1 - lib/src/commands/create/commands/legacy.dart | 144 --- lib/src/commands/create/create.dart | 12 - .../commands/create/commands/legacy_test.dart | 939 ------------------ test/src/commands/create/create_test.dart | 162 --- 13 files changed, 1719 deletions(-) delete mode 100644 e2e/test/commands/create/legacy/core_test.dart delete mode 100644 e2e/test/commands/create/legacy/dart_cli_test.dart delete mode 100644 e2e/test/commands/create/legacy/dart_pkg_test.dart delete mode 100644 e2e/test/commands/create/legacy/docs_site_test.dart delete mode 100644 e2e/test/commands/create/legacy/flame_game_test.dart delete mode 100644 e2e/test/commands/create/legacy/flutter_pkg_test.dart delete mode 100644 lib/src/commands/create/commands/legacy.dart delete mode 100644 test/src/commands/create/commands/legacy_test.dart diff --git a/.github/workflows/e2e.yaml b/.github/workflows/e2e.yaml index e9f26a05..f8b05d38 100644 --- a/.github/workflows/e2e.yaml +++ b/.github/workflows/e2e.yaml @@ -43,14 +43,6 @@ jobs: - test/commands/create/flutter_package/flutter_pkg_test.dart - test/commands/create/flutter_plugin/flutter_plugin_test.dart - # E2E tests for the legacy create command syntax - - test/commands/create/legacy/core_test.dart - - test/commands/create/legacy/dart_cli_test.dart - - test/commands/create/legacy/dart_pkg_test.dart - - test/commands/create/legacy/docs_site_test.dart - - test/commands/create/legacy/flame_game_test.dart - - test/commands/create/legacy/flutter_pkg_test.dart - steps: - name: 📚 Git Checkout uses: actions/checkout@v3.1.0 diff --git a/e2e/test/commands/create/legacy/core_test.dart b/e2e/test/commands/create/legacy/core_test.dart deleted file mode 100644 index 756017a9..00000000 --- a/e2e/test/commands/create/legacy/core_test.dart +++ /dev/null @@ -1,51 +0,0 @@ -import 'package:mason/mason.dart'; -import 'package:path/path.dart' as path; -import 'package:test/test.dart'; -import 'package:universal_io/io.dart'; - -import '../../../../helpers/helpers.dart'; - -void main() { - test( - 'create -t core', - timeout: const Timeout(Duration(minutes: 2)), - withRunner((commandRunner, logger, updater, logs) async { - final tempDirectory = Directory.systemTemp.createTempSync(); - addTearDown(() => tempDirectory.deleteSync(recursive: true)); - - final result = await commandRunner.run( - ['create', 'very_good_core', '-t', 'core', '-o', tempDirectory.path], - ); - expect(result, equals(ExitCode.success.code)); - - final workingDirectory = path.join(tempDirectory.path, 'very_good_core'); - - await expectSuccessfulProcessResult( - 'dart', - ['format'], - workingDirectory: workingDirectory, - ); - - final analyzeResult = await expectSuccessfulProcessResult( - 'flutter', - ['analyze', '.'], - workingDirectory: workingDirectory, - ); - expect(analyzeResult.stdout, contains('No issues found!')); - - final testResult = await expectSuccessfulProcessResult( - 'flutter', - ['test', '--no-pub', '--coverage', '--reporter', 'compact'], - workingDirectory: workingDirectory, - ); - expect(testResult.stdout, contains('All tests passed!')); - - final testCoverageResult = await expectSuccessfulProcessResult( - 'genhtml', - ['coverage/lcov.info', '-o', 'coverage'], - workingDirectory: workingDirectory, - ); - expect(testCoverageResult.stdout, contains('lines......: 100.0%')); - }), - ); -} diff --git a/e2e/test/commands/create/legacy/dart_cli_test.dart b/e2e/test/commands/create/legacy/dart_cli_test.dart deleted file mode 100644 index 44da0676..00000000 --- a/e2e/test/commands/create/legacy/dart_cli_test.dart +++ /dev/null @@ -1,82 +0,0 @@ -import 'package:mason/mason.dart'; -import 'package:path/path.dart' as path; -import 'package:test/test.dart'; -import 'package:universal_io/io.dart'; - -import '../../../../helpers/helpers.dart'; - -void main() { - test( - 'create -t dart_cli', - timeout: const Timeout(Duration(minutes: 2)), - withRunner((commandRunner, logger, updater, logs) async { - final tempDirectory = Directory.systemTemp.createTempSync(); - addTearDown(() => tempDirectory.deleteSync(recursive: true)); - - final result = await commandRunner.run( - [ - 'create', - 'very_good_dart_cli', - '-t', - 'dart_cli', - '-o', - tempDirectory.path, - ], - ); - expect(result, equals(ExitCode.success.code)); - - final workingDirectory = - path.join(tempDirectory.path, 'very_good_dart_cli'); - - // add coverage to collect coverage on dart test - await expectSuccessfulProcessResult( - 'dart', - ['pub', 'add', 'coverage:1.2.0'], - workingDirectory: workingDirectory, - ); - - await expectSuccessfulProcessResult( - 'dart', - ['format'], - workingDirectory: workingDirectory, - ); - - final analyzeResult = await expectSuccessfulProcessResult( - 'flutter', - ['analyze', '.'], - workingDirectory: workingDirectory, - ); - expect(analyzeResult.stdout, contains('No issues found!')); - - final testResult = await expectSuccessfulProcessResult( - 'dart', - ['test', '--coverage=coverage', '--reporter=compact'], - workingDirectory: workingDirectory, - ); - expect(testResult.stdout, contains('All tests passed!')); - - // collect coverage - await expectSuccessfulProcessResult( - 'dart', - [ - 'pub', - 'run', - 'coverage:format_coverage', - '--lcov', - '--in=coverage', - '--out=coverage/lcov.info', - '--packages=.dart_tool/package_config.json', - '--report-on=lib', - ], - workingDirectory: workingDirectory, - ); - - final testCoverageResult = await expectSuccessfulProcessResult( - 'genhtml', - ['coverage/lcov.info', '-o', 'coverage'], - workingDirectory: workingDirectory, - ); - expect(testCoverageResult.stdout, contains('lines......: 100.0%')); - }), - ); -} diff --git a/e2e/test/commands/create/legacy/dart_pkg_test.dart b/e2e/test/commands/create/legacy/dart_pkg_test.dart deleted file mode 100644 index 37e2c798..00000000 --- a/e2e/test/commands/create/legacy/dart_pkg_test.dart +++ /dev/null @@ -1,81 +0,0 @@ -import 'package:mason/mason.dart'; -import 'package:path/path.dart' as path; -import 'package:test/test.dart'; -import 'package:universal_io/io.dart'; - -import '../../../../helpers/helpers.dart'; - -void main() { - test( - 'create -t dart_pkg', - timeout: const Timeout(Duration(minutes: 2)), - withRunner((commandRunner, logger, updater, logs) async { - final tempDirectory = Directory.systemTemp.createTempSync(); - addTearDown(() => tempDirectory.deleteSync(recursive: true)); - - final result = await commandRunner.run( - [ - 'create', - 'very_good_dart', - '-t', - 'dart_pkg', - '-o', - tempDirectory.path - ], - ); - expect(result, equals(ExitCode.success.code)); - - final workingDirectory = path.join(tempDirectory.path, 'very_good_dart'); - - // add coverage to collect coverage on dart test - await expectSuccessfulProcessResult( - 'dart', - ['pub', 'add', 'coverage:1.2.0'], - workingDirectory: workingDirectory, - ); - - await expectSuccessfulProcessResult( - 'dart', - ['format'], - workingDirectory: workingDirectory, - ); - - final analyzeResult = await expectSuccessfulProcessResult( - 'flutter', - ['analyze', '.'], - workingDirectory: workingDirectory, - ); - expect(analyzeResult.stdout, contains('No issues found!')); - - final testResult = await expectSuccessfulProcessResult( - 'dart', - ['test', '--coverage=coverage', '--reporter=compact'], - workingDirectory: workingDirectory, - ); - expect(testResult.stdout, contains('All tests passed!')); - - // collect coverage - await expectSuccessfulProcessResult( - 'dart', - [ - 'pub', - 'run', - 'coverage:format_coverage', - '--lcov', - '--in=coverage', - '--out=coverage/lcov.info', - '--packages=.dart_tool/package_config.json', - '--report-on=lib', - ], - workingDirectory: workingDirectory, - ); - - final testCoverageResult = await expectSuccessfulProcessResult( - 'genhtml', - ['coverage/lcov.info', '-o', 'coverage'], - workingDirectory: workingDirectory, - ); - expect(testCoverageResult.stdout, contains('lines......: 100.0%')); - }), - ); -} diff --git a/e2e/test/commands/create/legacy/docs_site_test.dart b/e2e/test/commands/create/legacy/docs_site_test.dart deleted file mode 100644 index ad60154f..00000000 --- a/e2e/test/commands/create/legacy/docs_site_test.dart +++ /dev/null @@ -1,57 +0,0 @@ -import 'package:mason/mason.dart'; -import 'package:path/path.dart' as path; -import 'package:test/test.dart'; -import 'package:universal_io/io.dart'; - -import '../../../../helpers/helpers.dart'; - -void main() { - test( - 'create -t docs_site', - timeout: const Timeout(Duration(minutes: 2)), - withRunner((commandRunner, logger, updater, logs) async { - final tempDirectory = Directory.systemTemp.createTempSync(); - addTearDown(() => tempDirectory.deleteSync(recursive: true)); - - final result = await commandRunner.run( - [ - 'create', - 'very_good_docs_site', - '-t', - 'docs_site', - '-o', - tempDirectory.path - ], - ); - expect(result, equals(ExitCode.success.code)); - - final workingDirectory = - path.join(tempDirectory.path, 'very_good_docs_site'); - - await expectSuccessfulProcessResult( - 'npm', - ['install'], - workingDirectory: workingDirectory, - validateStderr: false, - ); - - await expectSuccessfulProcessResult( - 'npm', - ['run', 'format'], - workingDirectory: workingDirectory, - ); - - await expectSuccessfulProcessResult( - 'npm', - ['run', 'lint'], - workingDirectory: workingDirectory, - ); - - await expectSuccessfulProcessResult( - 'npm', - ['run', 'build'], - workingDirectory: workingDirectory, - ); - }), - ); -} diff --git a/e2e/test/commands/create/legacy/flame_game_test.dart b/e2e/test/commands/create/legacy/flame_game_test.dart deleted file mode 100644 index 8e12e6a9..00000000 --- a/e2e/test/commands/create/legacy/flame_game_test.dart +++ /dev/null @@ -1,60 +0,0 @@ -import 'package:mason/mason.dart'; -import 'package:path/path.dart' as path; -import 'package:test/test.dart'; -import 'package:universal_io/io.dart'; - -import '../../../../helpers/helpers.dart'; - -void main() { - test( - 'create -t flame_game', - timeout: const Timeout(Duration(minutes: 2)), - withRunner((commandRunner, logger, updater, logs) async { - final tempDirectory = Directory.systemTemp.createTempSync(); - - final result = await commandRunner.run( - [ - 'create', - 'very_good_flame_game', - '-t', - 'flame_game', - '-o', - tempDirectory.path, - ], - ); - expect(result, equals(ExitCode.success.code)); - - final workingDirectory = path.join( - tempDirectory.path, - 'very_good_flame_game', - ); - - await expectSuccessfulProcessResult( - 'dart', - ['format'], - workingDirectory: workingDirectory, - ); - - final analyzeResult = await expectSuccessfulProcessResult( - 'flutter', - ['analyze', '.'], - workingDirectory: workingDirectory, - ); - expect(analyzeResult.stdout, contains('No issues found!')); - - final testResult = await expectSuccessfulProcessResult( - 'flutter', - ['test', '--no-pub', '--coverage', '--reporter', 'compact'], - workingDirectory: workingDirectory, - ); - expect(testResult.stdout, contains('All tests passed!')); - - final testCoverageResult = await expectSuccessfulProcessResult( - 'genhtml', - ['coverage/lcov.info', '-o', 'coverage'], - workingDirectory: workingDirectory, - ); - expect(testCoverageResult.stdout, contains('lines......: 97.8%')); - }), - ); -} diff --git a/e2e/test/commands/create/legacy/flutter_pkg_test.dart b/e2e/test/commands/create/legacy/flutter_pkg_test.dart deleted file mode 100644 index 10de3907..00000000 --- a/e2e/test/commands/create/legacy/flutter_pkg_test.dart +++ /dev/null @@ -1,59 +0,0 @@ -import 'package:mason/mason.dart'; -import 'package:path/path.dart' as path; -import 'package:test/test.dart'; -import 'package:universal_io/io.dart'; - -import '../../../../helpers/helpers.dart'; - -void main() { - test( - 'create -t flutter_pkg', - timeout: const Timeout(Duration(minutes: 2)), - withRunner((commandRunner, logger, updater, logs) async { - final tempDirectory = Directory.systemTemp.createTempSync(); - addTearDown(() => tempDirectory.deleteSync(recursive: true)); - - final result = await commandRunner.run( - [ - 'create', - 'very_good_flutter', - '-t', - 'flutter_pkg', - '-o', - tempDirectory.path, - ], - ); - expect(result, equals(ExitCode.success.code)); - - final workingDirectory = - path.join(tempDirectory.path, 'very_good_flutter'); - - await expectSuccessfulProcessResult( - 'dart', - ['format'], - workingDirectory: workingDirectory, - ); - - final analyzeResult = await expectSuccessfulProcessResult( - 'flutter', - ['analyze', '.'], - workingDirectory: workingDirectory, - ); - expect(analyzeResult.stdout, contains('No issues found!')); - - final testResult = await expectSuccessfulProcessResult( - 'flutter', - ['test', '--no-pub', '--coverage', '--reporter', 'compact'], - workingDirectory: workingDirectory, - ); - expect(testResult.stdout, contains('All tests passed!')); - - final testCoverageResult = await expectSuccessfulProcessResult( - 'genhtml', - ['coverage/lcov.info', '-o', 'coverage'], - workingDirectory: workingDirectory, - ); - expect(testCoverageResult.stdout, contains('lines......: 100.0%')); - }), - ); -} diff --git a/lib/src/command_runner.dart b/lib/src/command_runner.dart index ebf80649..06fada39 100644 --- a/lib/src/command_runner.dart +++ b/lib/src/command_runner.dart @@ -65,61 +65,6 @@ class VeryGoodCommandRunner extends CompletionCommandRunner { @override void printUsage() => _logger.info(usage); - /// Parse commands with legacy support for the create command. - /// - /// Redirects usages of [CreateCommand] to the [LegacyCreateCommand] if - /// it detects the legacy syntax. - @override - ArgResults parse(Iterable args) { - ArgResults result; - - // Try to parse the args - try { - result = argParser.parse(args); - } on ArgParserException catch (error) { - if (error.commands.isEmpty) usageException(error.message); - - // if there is an error and the last parsed command is create, - // we possibly have a legacy syntax usage, retry parsing with the - // legacy command. - if (error.commands.last == 'create') { - return parse(_putLegacyAfterCreate(args)); - } - - // Otherwise just go about showing the usage exception for the last - // parsed command. - var command = commands[error.commands.first]!; - for (final commandName in error.commands.skip(1)) { - command = command.subcommands[commandName]!; - } - - command.usageException(error.message); - } - - // if no arg is passed, or the last given command is create, - // show normal results. - if (args.isEmpty) { - return result; - } - - final topLevelCommand = result.command; - - // Retry with legacy command if: - // - top level command is not null - // - and the top level command is create - // - and no create subcommand was parsed - // - and user is not calling create --help - if (topLevelCommand != null && - topLevelCommand.name == 'create' && - topLevelCommand.command == null && - !topLevelCommand.wasParsed('help') && - topLevelCommand.rest.isNotEmpty) { - return parse(_putLegacyAfterCreate(args)); - } - - return result; - } - @override Future run(Iterable args) async { try { @@ -233,11 +178,3 @@ Run ${lightCyan.wrap('very_good update')} to update''', } catch (_) {} } } - -Iterable _putLegacyAfterCreate(Iterable args) { - final argsList = args.toList(); - final index = argsList.indexOf('create'); - - argsList.insert(index + 1, 'legacy'); - return argsList; -} diff --git a/lib/src/commands/create/commands/commands.dart b/lib/src/commands/create/commands/commands.dart index 544555cd..5d1eade2 100644 --- a/lib/src/commands/create/commands/commands.dart +++ b/lib/src/commands/create/commands/commands.dart @@ -6,4 +6,3 @@ export 'flame_game.dart'; export 'flutter_app.dart'; export 'flutter_package.dart'; export 'flutter_plugin.dart'; -export 'legacy.dart'; diff --git a/lib/src/commands/create/commands/legacy.dart b/lib/src/commands/create/commands/legacy.dart deleted file mode 100644 index efd8b725..00000000 --- a/lib/src/commands/create/commands/legacy.dart +++ /dev/null @@ -1,144 +0,0 @@ -import 'package:mason/mason.dart'; -import 'package:very_good_cli/src/commands/commands.dart'; -import 'package:very_good_cli/src/commands/create/templates/templates.dart'; - -/// {@template very_good_legacy_create_command} -/// Legacy elements of the [CreateCommand] class kept to maintain backwards -/// compatibility with the `very_good create ` command syntax. -/// {@endtemplate} -class LegacyCreateCommand extends CreateSubCommand - with OrgName, MultiTemplates { - /// {@macro very_good_legacy_create_command} - LegacyCreateCommand({ - required super.analytics, - required super.logger, - super.generatorFromBundle, - super.generatorFromBrick, - }) { - argParser - ..addOption( - 'executable-name', - help: 'Used by the dart_cli template, the CLI executable name ' - '(defaults to the project name)', - ) - ..addOption( - 'android', - help: 'The plugin supports the Android platform.', - defaultsTo: 'true', - ) - ..addOption( - 'ios', - help: 'The plugin supports the iOS platform.', - defaultsTo: 'true', - ) - ..addOption( - 'web', - help: 'The plugin supports the Web platform.', - defaultsTo: 'true', - ) - ..addOption( - 'linux', - help: 'The plugin supports the Linux platform.', - defaultsTo: 'true', - ) - ..addOption( - 'macos', - help: 'The plugin supports the macOS platform.', - defaultsTo: 'true', - ) - ..addOption( - 'windows', - help: 'The plugin supports the Windows platform.', - defaultsTo: 'true', - ) - ..addOption( - 'application-id', - help: 'The bundle identifier on iOS or application id on Android. ' - '(defaults to .)', - ) - ..addFlag( - 'publishable', - negatable: false, - help: 'Whether the generated project is intended to be published ' - '(Does not affect flutter application templates)', - ); - } - - @override - String get defaultTemplateName => 'core'; - - @override - List