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 options = PubGetOptions.fromArgResults(argResults!);

  final targetDirectory =
      options.globalPubOptions.globalOptions.directory ??
      config.workingDirectory;
  Directory.current = targetDirectory;

  final arguments = [
    'pub',
    ...buildGlobalArgs(options.globalPubOptions),
    'get',
    if (options.offline) '--offline',
    if (options.dryRun) '--dry-run',
    if (options.enforceLockfile) '--enforce-lockfile',
    if (options.precompile) '--precompile',
    ...argResults!.rest,
  ];

  final preHookExitCode = await runPreHook(
    commandName: 'get',
    globalOptions: options.globalPubOptions.globalOptions,
  );
  if (preHookExitCode != 0) {
    return preHookExitCode;
  }

  if (options.globalPubOptions.globalOptions.isVerbose) {
    logger.info('Running: dart ${arguments.join(' ')}');
  }

  if (config.pubspec.name == '_') {
    await _generateDependencyOverrides(options, arguments);
  }

  final exitCode = await runDartProcess(
    arguments: arguments,
    environment: getCacheEnv(options.globalPubOptions.cacheDir),
  );

  if (exitCode != 0) {
    return exitCode;
  }

  final postHookExitCode = await runPostHook(
    commandName: 'get',
    globalOptions: options.globalPubOptions.globalOptions,
  );
  return postHookExitCode;
}