run method

  1. @override
FutureOr<int?> run([
  1. DevToolExecutionContext? context
])
override

Runs this tool and returns (either synchronously or asynchronously) an int which will be treated as the exit code (i.e. non-zero means failure).

context is optional. If calling this directly from a dart script, you will most likely want to omit this. DevTools that are converted to a DevToolCommand via toCommand for use in a command-line application will provide a fully-populated DevToolExecutionContext here.

This is the one API member that subclasses need to implement.

Implementation

@override
FutureOr<int?> run([DevToolExecutionContext? context]) async {
  context ??= DevToolExecutionContext();
  final argResults = context.argResults;
  if (argResults != null) {
    assertNoPositionalArgsNorArgsAfterSeparator(
        argResults, context.usageException,
        commandName: context.commandName);
  }
  logSubprocessHeader(_log, '$_executable ${_args.join(' ')}');
  _process = await startProcessAndEnsureExit(
      ProcessDeclaration(_executable, _args,
          mode: _mode, workingDirectory: _workingDirectory),
      log: _log);
  return _process!.exitCode;
}