run method

  1. @override
Future<int> run()
override

Runs this command.

The return value is wrapped in a Future if necessary and returned by CommandRunner.runCommand.

Implementation

@override
Future<int> run() async {
  final argResults = super.argResults!;

  final parsed = _parseExtras(argResults.arguments);
  final args = super.argParser.parse(parsed['args'] as Iterable<String>).rest;
  final extra = (parsed['extra'] as List).join(' ');

  if (args.isEmpty) {
    stdout.writeln(super.usage);
    return 0;
  } else {
    final arg = args.join(' ').trim();

    final pubspec = Pubspec();
    final info = await pubspec.getInfo();
    final scripts = await pubspec.getScripts();

    final registry = ScriptsRegistry(scripts);

    stdout.writeln('> $info $arg'.bold());
    return registry.runScript(arg, extra: extra);
  }
}