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 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 preHookRunner = DpkScriptRunner(
    config: config,
    arguments: [],
    options: RunOptions(
      globalOptions: options.globalPubOptions.globalOptions,
      script: HookType.preget.name,
    ),
  );

  final preHookExitCode = await preHookRunner.run(skipIfMissing: true);
  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,
    workingDirectory: options.globalPubOptions.globalOptions.directory,
    environment: getCacheEnv(options.globalPubOptions.cacheDir),
  );

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

  final postHookRunner = DpkScriptRunner(
    config: config,
    arguments: [],
    options: RunOptions(
      globalOptions: options.globalPubOptions.globalOptions,
      script: HookType.postget.name,
    ),
  );

  final postHookExitCode = await postHookRunner.run(skipIfMissing: true);
  return postHookExitCode;
}