11import 'package:args/args.dart' ;
22import 'package:args/command_runner.dart' ;
3+ import 'package:cli_completion/cli_completion.dart' ;
34import 'package:mason/mason.dart' hide packageVersion;
45import 'package:pub_updater/pub_updater.dart' ;
56import 'package:usage/usage_io.dart' ;
@@ -18,7 +19,7 @@ const packageName = 'very_good_cli';
1819/// {@template very_good_command_runner}
1920/// A [CommandRunner] for the Very Good CLI.
2021/// {@endtemplate}
21- class VeryGoodCommandRunner extends CommandRunner <int > {
22+ class VeryGoodCommandRunner extends CompletionCommandRunner <int > {
2223 /// {@macro very_good_command_runner}
2324 VeryGoodCommandRunner ({
2425 Analytics ? analytics,
@@ -85,6 +86,7 @@ class VeryGoodCommandRunner extends CommandRunner<int> {
8586 normalizedResponse == 'y' || normalizedResponse == 'yes' ;
8687 }
8788 final _argResults = parse (args);
89+
8890 if (_argResults['verbose' ] == true ) {
8991 _logger.level = Level .verbose;
9092 }
@@ -107,6 +109,11 @@ class VeryGoodCommandRunner extends CommandRunner<int> {
107109
108110 @override
109111 Future <int ?> runCommand (ArgResults topLevelResults) async {
112+ if (topLevelResults.command? .name == 'completion' ) {
113+ await super .runCommand (topLevelResults);
114+ return ExitCode .success.code;
115+ }
116+
110117 _logger
111118 ..detail ('Argument information:' )
112119 ..detail (' Top level options:' );
0 commit comments