diff --git a/packages/cli_tools/analysis_options.yaml b/packages/cli_tools/analysis_options.yaml index bcc9d5b..3ce6aff 100644 --- a/packages/cli_tools/analysis_options.yaml +++ b/packages/cli_tools/analysis_options.yaml @@ -1,5 +1,12 @@ include: package:serverpod_lints/cli.yaml +analyzer: + language: + strict-raw-types: false + errors: + inference_failure_on_instance_creation: ignore + inference_failure_on_function_invocation: ignore + linter: rules: prefer_relative_imports: true diff --git a/packages/cli_tools/example/main.dart b/packages/cli_tools/example/main.dart index d91ba8b..f5316e2 100644 --- a/packages/cli_tools/example/main.dart +++ b/packages/cli_tools/example/main.dart @@ -2,7 +2,7 @@ import 'package:cli_tools/cli_tools.dart'; import 'package:config/config.dart'; Future main(final List args) async { - final commandRunner = BetterCommandRunner, void>( + final commandRunner = BetterCommandRunner( 'example', 'Example CLI command', globalOptions: [ diff --git a/packages/cli_tools/example/simple_command_example.dart b/packages/cli_tools/example/simple_command_example.dart index 2787cb8..60a35ec 100644 --- a/packages/cli_tools/example/simple_command_example.dart +++ b/packages/cli_tools/example/simple_command_example.dart @@ -14,7 +14,7 @@ import 'package:config/config.dart'; /// INTERVAL=1s dart run example/simple_command_example.dart show /// ``` Future main(final List args) async { - final commandRunner = BetterCommandRunner, void>( + final commandRunner = BetterCommandRunner( 'example', 'Example CLI command', ); diff --git a/packages/cli_tools/lib/src/better_command_runner/better_command_runner.dart b/packages/cli_tools/lib/src/better_command_runner/better_command_runner.dart index 21f65b8..ee7329b 100644 --- a/packages/cli_tools/lib/src/better_command_runner/better_command_runner.dart +++ b/packages/cli_tools/lib/src/better_command_runner/better_command_runner.dart @@ -6,8 +6,7 @@ import 'package:args/command_runner.dart'; import 'package:config/config.dart'; /// A function type for executing code before running a command. -typedef OnBeforeRunCommand, T> = Future - Function(BetterCommandRunner runner); +typedef OnBeforeRunCommand = Future Function(BetterCommandRunner runner); /// A proxy for user-provided functions for passing specific log messages. /// @@ -55,7 +54,7 @@ typedef OnAnalyticsEvent = void Function(String event); /// The [BetterCommandRunner] class uses the config library to provide /// a more enhanced command line interface for running commands and handling /// command line arguments, environment variables, and configuration. -class BetterCommandRunner, T> +class BetterCommandRunner extends CommandRunner { /// Process exit code value for command not found - /// The specified command was not found or couldn't be located. @@ -63,7 +62,7 @@ class BetterCommandRunner, T> final MessageOutput? _messageOutput; final SetLogLevel? _setLogLevel; - final OnBeforeRunCommand? _onBeforeRunCommand; + final OnBeforeRunCommand? _onBeforeRunCommand; OnAnalyticsEvent? _onAnalyticsEvent; /// The environment variables used for configuration resolution. @@ -144,7 +143,7 @@ class BetterCommandRunner, T> final MessageOutput? messageOutput = const MessageOutput(usageLogger: print), final SetLogLevel? setLogLevel, - final OnBeforeRunCommand? onBeforeRunCommand, + final OnBeforeRunCommand? onBeforeRunCommand, final OnAnalyticsEvent? onAnalyticsEvent, final int? wrapTextColumn, final List? globalOptions, diff --git a/packages/cli_tools/lib/src/documentation_generator/documentation_generator.dart b/packages/cli_tools/lib/src/documentation_generator/documentation_generator.dart index b9447c2..e0143ed 100644 --- a/packages/cli_tools/lib/src/documentation_generator/documentation_generator.dart +++ b/packages/cli_tools/lib/src/documentation_generator/documentation_generator.dart @@ -1,9 +1,7 @@ -import 'package:config/config.dart' show OptionDefinition; - import '../../better_command_runner.dart' show BetterCommandRunner; class CommandDocumentationGenerator { - final BetterCommandRunner, void> commandRunner; + final BetterCommandRunner commandRunner; CommandDocumentationGenerator(this.commandRunner); diff --git a/packages/cli_tools/test/better_command_runner/analytics_test.dart b/packages/cli_tools/test/better_command_runner/analytics_test.dart index 5a3f23c..fc99d82 100644 --- a/packages/cli_tools/test/better_command_runner/analytics_test.dart +++ b/packages/cli_tools/test/better_command_runner/analytics_test.dart @@ -2,12 +2,11 @@ import 'dart:async'; import 'package:args/command_runner.dart'; import 'package:cli_tools/better_command_runner.dart'; -import 'package:config/config.dart' show OptionDefinition; import 'package:test/test.dart'; import '../test_utils/test_utils.dart' show flushEventQueue; -class MockCommand extends Command { +class MockCommand extends Command { static String commandName = 'mock-command'; @override @@ -28,7 +27,7 @@ class MockCommand extends Command { } } -class CompletableMockCommand extends Command { +class CompletableMockCommand extends Command { static String commandName = 'completable-mock-command'; @override @@ -54,9 +53,9 @@ class CompletableMockCommand extends Command { } void main() { - late BetterCommandRunner, void> runner; + late BetterCommandRunner runner; group('Given runner with null onAnalyticsEvent callback', () { - final runner = BetterCommandRunner, void>( + final runner = BetterCommandRunner( 'test', 'this is a test cli', onAnalyticsEvent: null, @@ -76,7 +75,7 @@ void main() { }); group('Given runner with onAnalyticsEvent callback defined', () { - final runner = BetterCommandRunner, void>( + final runner = BetterCommandRunner( 'test', 'this is a test cli', onAnalyticsEvent: (final event) {}, @@ -95,7 +94,7 @@ void main() { group('Given runner with analytics enabled', () { List events = []; setUp(() { - runner = BetterCommandRunner, void>( + runner = BetterCommandRunner( 'test', 'this is a test cli', onAnalyticsEvent: (final event) => events.add(event), @@ -208,7 +207,7 @@ void main() { group('Given runner with registered command and analytics enabled', () { List events = []; setUp(() { - runner = BetterCommandRunner, void>( + runner = BetterCommandRunner( 'test', 'this is a test cli', onAnalyticsEvent: (final event) => events.add(event), @@ -273,7 +272,7 @@ void main() { late CompletableMockCommand command; setUp(() { command = CompletableMockCommand(); - runner = BetterCommandRunner, void>( + runner = BetterCommandRunner( 'test', 'this is a test cli', onAnalyticsEvent: (final event) => events.add(event), diff --git a/packages/cli_tools/test/better_command_runner/better_command_test.dart b/packages/cli_tools/test/better_command_runner/better_command_test.dart index c4d8663..d07b23c 100644 --- a/packages/cli_tools/test/better_command_runner/better_command_test.dart +++ b/packages/cli_tools/test/better_command_runner/better_command_test.dart @@ -16,7 +16,7 @@ enum BespokeGlobalOption implements OptionDefinition { final ConfigOptionBase option; } -class MockCommand extends BetterCommand, void> { +class MockCommand extends BetterCommand { static String commandName = 'mock-command'; MockCommand({super.messageOutput}) @@ -38,9 +38,7 @@ class MockCommand extends BetterCommand, void> { Future run() async {} @override - FutureOr? runWithConfig( - final Configuration> commandConfig, - ) { + FutureOr? runWithConfig(final Configuration commandConfig) { throw UnimplementedError(); } } @@ -58,7 +56,7 @@ void main() { final betterCommand = MockCommand( messageOutput: messageOutput, ); - final runner = BetterCommandRunner, void>( + final runner = BetterCommandRunner( 'test', 'test project', onAnalyticsEvent: (final e) => analyticsEvents.add(e), @@ -99,7 +97,7 @@ void main() { 'then help analytics is sent', () async { await runner.run(['--help']); - await Future.delayed(const Duration(milliseconds: 100)); + await Future.delayed(const Duration(milliseconds: 100)); expect(analyticsEvents, hasLength(1)); expect(analyticsEvents.single, 'help'); }); @@ -109,7 +107,7 @@ void main() { 'then help analytics is sent', () async { await runner.run(['help']); - await Future.delayed(const Duration(milliseconds: 100)); + await Future.delayed(const Duration(milliseconds: 100)); expect(analyticsEvents, hasLength(1)); expect(analyticsEvents.single, 'help'); }); @@ -119,7 +117,7 @@ void main() { 'then subcommand analytics is sent', () async { await runner.run([MockCommand.commandName]); - await Future.delayed(const Duration(milliseconds: 100)); + await Future.delayed(const Duration(milliseconds: 100)); expect(analyticsEvents, hasLength(1)); expect(analyticsEvents.single, 'mock-command'); }); @@ -129,7 +127,7 @@ void main() { 'then invalid command analytics is sent', () async { await runner.run(['no-such-command']).catchError((final _) {}); - await Future.delayed(const Duration(milliseconds: 100)); + await Future.delayed(const Duration(milliseconds: 100)); expect(analyticsEvents, hasLength(1)); expect(analyticsEvents.single, 'invalid'); }); @@ -140,7 +138,7 @@ void main() { 'then subcommand analytics is not sent', () async { await runner.run([MockCommand.commandName, '--no-analytics']); - await Future.delayed(const Duration(milliseconds: 100)); + await Future.delayed(const Duration(milliseconds: 100)); expect(analyticsEvents, isEmpty); }); }); @@ -157,7 +155,7 @@ void main() { final betterCommand = MockCommand( messageOutput: messageOutput, ); - final runner = BetterCommandRunner, void>( + final runner = BetterCommandRunner( 'test', 'test project', onAnalyticsEvent: (final e) => analyticsEvents.add(e), @@ -207,7 +205,7 @@ void main() { final betterCommand = MockCommand( messageOutput: messageOutput, ); - final runner = BetterCommandRunner, void>( + final runner = BetterCommandRunner( 'test', 'test project', messageOutput: messageOutput, @@ -256,7 +254,7 @@ void main() { final betterCommand = MockCommand( messageOutput: messageOutput, ); - final runner = BetterCommandRunner, void>( + final runner = BetterCommandRunner( 'test', 'test project', globalOptions: BespokeGlobalOption.values, diff --git a/packages/cli_tools/test/better_command_runner/command_test.dart b/packages/cli_tools/test/better_command_runner/command_test.dart index aa065ca..49a9958 100644 --- a/packages/cli_tools/test/better_command_runner/command_test.dart +++ b/packages/cli_tools/test/better_command_runner/command_test.dart @@ -2,7 +2,6 @@ import 'dart:async'; import 'package:args/command_runner.dart'; import 'package:cli_tools/better_command_runner.dart'; -import 'package:config/config.dart' show OptionDefinition; import 'package:test/test.dart'; class MockCommand extends Command { @@ -34,7 +33,7 @@ class MockCommand extends Command { } void main() { - late BetterCommandRunner, void> runner; + late BetterCommandRunner runner; late MockCommand mockCommand; group('Given runner with registered command', () { setUp(() { diff --git a/packages/cli_tools/test/better_command_runner/default_flags_test.dart b/packages/cli_tools/test/better_command_runner/default_flags_test.dart index 471497d..6a8fbcd 100644 --- a/packages/cli_tools/test/better_command_runner/default_flags_test.dart +++ b/packages/cli_tools/test/better_command_runner/default_flags_test.dart @@ -1,10 +1,9 @@ import 'package:cli_tools/better_command_runner.dart'; -import 'package:config/config.dart' show OptionDefinition; import 'package:test/test.dart'; void main() { group('Given BetterCommandRunner runner with onAnalyticsEvent', () { - final runner = BetterCommandRunner, void>( + final runner = BetterCommandRunner( 'test', 'test description', onAnalyticsEvent: (final event) {}, diff --git a/packages/cli_tools/test/better_command_runner/exit_exceptions_test.dart b/packages/cli_tools/test/better_command_runner/exit_exceptions_test.dart index 52b2276..eecbe87 100644 --- a/packages/cli_tools/test/better_command_runner/exit_exceptions_test.dart +++ b/packages/cli_tools/test/better_command_runner/exit_exceptions_test.dart @@ -1,9 +1,8 @@ import 'package:args/command_runner.dart'; import 'package:cli_tools/better_command_runner.dart'; -import 'package:config/config.dart' show OptionDefinition; import 'package:test/test.dart'; -class MockCommand extends Command { +class MockCommand extends Command { static String commandName = 'mock-command'; @override @@ -29,10 +28,8 @@ class MockCommand extends Command { void main() { group('Given runner with registered command', () { - final runner = BetterCommandRunner, void>( - 'test', - 'this is a test cli', - )..addCommand(MockCommand()); + final runner = BetterCommandRunner('test', 'this is a test cli') + ..addCommand(MockCommand()); test( 'when running with unknown command then UsageException is thrown.', diff --git a/packages/cli_tools/test/better_command_runner/logging_test.dart b/packages/cli_tools/test/better_command_runner/logging_test.dart index 7a8b86a..7a08aaf 100644 --- a/packages/cli_tools/test/better_command_runner/logging_test.dart +++ b/packages/cli_tools/test/better_command_runner/logging_test.dart @@ -1,9 +1,8 @@ import 'package:args/command_runner.dart'; import 'package:cli_tools/better_command_runner.dart'; -import 'package:config/config.dart' show OptionDefinition; import 'package:test/test.dart'; -class MockCommand extends Command { +class MockCommand extends Command { static String commandName = 'mock-command'; @override @@ -31,7 +30,7 @@ void main() { group('Given runner with registered command and logging monitor', () { final errors = []; final infos = []; - final runner = BetterCommandRunner, void>( + final runner = BetterCommandRunner( 'test', 'this is a test cli', messageOutput: MessageOutput( diff --git a/packages/cli_tools/test/better_command_runner/parse_log_level_test.dart b/packages/cli_tools/test/better_command_runner/parse_log_level_test.dart index 53e9167..dd133fc 100644 --- a/packages/cli_tools/test/better_command_runner/parse_log_level_test.dart +++ b/packages/cli_tools/test/better_command_runner/parse_log_level_test.dart @@ -1,9 +1,8 @@ import 'package:args/command_runner.dart'; import 'package:cli_tools/better_command_runner.dart'; -import 'package:config/config.dart' show OptionDefinition; import 'package:test/test.dart'; -class MockCommand extends Command { +class MockCommand extends Command { static String commandName = 'mock-command'; @override @@ -25,7 +24,7 @@ void main() { logLevel = null; }); group('Given runner with setLogLevel callback', () { - final runner = BetterCommandRunner, void>( + final runner = BetterCommandRunner( 'test', 'this is a test cli', messageOutput: const MessageOutput(), @@ -93,7 +92,7 @@ void main() { }); group('Given runner with setLogLevel callback and registered command', () { - final runner = BetterCommandRunner, void>( + final runner = BetterCommandRunner( 'test', 'this is a test cli', setLogLevel: ({ diff --git a/packages/cli_tools/test/documentation_generator/generate_markdown_test.dart b/packages/cli_tools/test/documentation_generator/generate_markdown_test.dart index c51c7f5..b2bd4df 100644 --- a/packages/cli_tools/test/documentation_generator/generate_markdown_test.dart +++ b/packages/cli_tools/test/documentation_generator/generate_markdown_test.dart @@ -5,7 +5,7 @@ import 'package:cli_tools/cli_tools.dart'; import 'package:config/config.dart' show Configuration, OptionDefinition; import 'package:test/test.dart'; -class AddSpiceCommand extends Command { +class AddSpiceCommand extends Command { @override final String name = 'add'; @@ -21,7 +21,7 @@ class AddSpiceCommand extends Command { void run() {} } -class RemoveSpiceCommand extends Command { +class RemoveSpiceCommand extends Command { @override final String name = 'remove'; @@ -37,7 +37,7 @@ class RemoveSpiceCommand extends Command { void run() {} } -class AddVegetableCommand extends Command { +class AddVegetableCommand extends Command { @override final String name = 'add'; @@ -52,7 +52,7 @@ class AddVegetableCommand extends Command { void run() {} } -class SpiceCommand extends BetterCommand, void> { +class SpiceCommand extends BetterCommand { @override final String name = 'spice'; @@ -68,14 +68,12 @@ class SpiceCommand extends BetterCommand, void> { void run() {} @override - FutureOr? runWithConfig( - final Configuration> commandConfig, - ) { + FutureOr? runWithConfig(final Configuration commandConfig) { throw UnimplementedError(); } } -class VegetableCommand extends BetterCommand, void> { +class VegetableCommand extends BetterCommand { @override final String name = 'vegetable'; @@ -90,9 +88,7 @@ class VegetableCommand extends BetterCommand, void> { void run() {} @override - FutureOr? runWithConfig( - final Configuration> commandConfig, - ) { + FutureOr? runWithConfig(final Configuration commandConfig) { throw UnimplementedError(); } } @@ -102,12 +98,10 @@ void main() { late Map output; setUpAll(() async { - final commandRunner = BetterCommandRunner, void>( - 'cookcli', - 'A cli to create wonderful dishes.', - ) - ..addCommand(SpiceCommand()) - ..addCommand(VegetableCommand()); + final commandRunner = + BetterCommandRunner('cookcli', 'A cli to create wonderful dishes.') + ..addCommand(SpiceCommand()) + ..addCommand(VegetableCommand()); final generator = CommandDocumentationGenerator(commandRunner); output = generator.generateMarkdown(); }); diff --git a/packages/cli_tools/test/pub_api_client_test.dart b/packages/cli_tools/test/pub_api_client_test.dart index ec98897..315c7de 100644 --- a/packages/cli_tools/test/pub_api_client_test.dart +++ b/packages/cli_tools/test/pub_api_client_test.dart @@ -14,7 +14,7 @@ MockClient createMockClient({ return MockClient((final request) { if (request.method != 'GET') throw NoSuchMethodError; return Future(() async { - await Future.delayed(responseDelay); + await Future.delayed(responseDelay); return http.Response(body, status); }); }); diff --git a/packages/cli_tools/test/test_utils/mock_stdin.dart b/packages/cli_tools/test/test_utils/mock_stdin.dart index ee6f965..2561620 100644 --- a/packages/cli_tools/test/test_utils/mock_stdin.dart +++ b/packages/cli_tools/test/test_utils/mock_stdin.dart @@ -159,7 +159,7 @@ class MockStdin implements Stdin { } @override - Future pipe(final StreamConsumer> streamConsumer) { + Future pipe(final StreamConsumer> streamConsumer) { throw UnimplementedError(); } diff --git a/packages/cli_tools/test/test_utils/mock_stdout.dart b/packages/cli_tools/test/test_utils/mock_stdout.dart index aab6bdc..6bb4a94 100644 --- a/packages/cli_tools/test/test_utils/mock_stdout.dart +++ b/packages/cli_tools/test/test_utils/mock_stdout.dart @@ -25,20 +25,20 @@ class MockStdout implements Stdout { } @override - Future addStream(final Stream> stream) { + Future addStream(final Stream> stream) { throw UnimplementedError(); } @override - Future close() { + Future close() { return Future.value(); } @override - Future get done => Future.value(); + Future get done => Future.value(); @override - Future flush() { + Future flush() { return Future.value(); } @@ -67,7 +67,7 @@ class MockStdout implements Stdout { } @override - void writeAll(final Iterable objects, [final String sep = '']) { + void writeAll(final Iterable objects, [final String sep = '']) { _buffer.writeAll(objects, sep); } diff --git a/packages/cli_tools/test/test_utils/prompts/option_matcher.dart b/packages/cli_tools/test/test_utils/prompts/option_matcher.dart index df4332f..7e31985 100644 --- a/packages/cli_tools/test/test_utils/prompts/option_matcher.dart +++ b/packages/cli_tools/test/test_utils/prompts/option_matcher.dart @@ -12,7 +12,7 @@ class _EqualsAllOptionsMatcher extends Matcher { _EqualsAllOptionsMatcher(this._expected); @override - bool matches(final dynamic item, final Map matchState) { + bool matches(final dynamic item, final Map matchState) { if (item is! List