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 {
  var arguments = argResults!.rest;
  if (arguments.contains('--help') || arguments.contains('-h')) {
    console.info('dpk $name passes its arguments to dart pub $name.\n');
    return context.runDart(['pub', name, ...arguments]);
  }

  if (name == 'add') {
    arguments = _withCatalogVersions(arguments);
  }

  final project = context.project;
  return withTerminalTitle(
    console,
    'dpk $name',
    () => context.withHooks(name, (stack) async {
      final exitCode = await context.runDart(
        ['pub', ...context.pubFlags, name, ...arguments],
        useProjectCache: name != 'global',
        environment: stack.toEnvironment(),
      );
      if (exitCode != 0 ||
          !definition.changesResolution ||
          project == null ||
          !project.isProjectMode) {
        return exitCode;
      }
      return ProjectCache.forProject(project, context).sync();
    }),
  );
}