run method
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 parsed = _parsePassthroughArguments(argResults!.rest);
final options = parsed.options;
final isHelpRequest =
parsed.pubArguments.contains('--help') ||
parsed.pubArguments.contains('-h');
if (isHelpRequest) {
return runDartProcess(
arguments: ['pub', commandName, ...parsed.pubArguments],
);
}
final targetDirectory =
options.globalOptions.directory ?? config.workingDirectory;
final arguments = [
'pub',
...buildGlobalArgs(options),
commandName,
...parsed.pubArguments,
];
final beforeHookExitCode = await runBeforeHook(
commandName: commandName,
globalOptions: options.globalOptions,
);
if (beforeHookExitCode != 0) {
return beforeHookExitCode;
}
final preHookExitCode = await runPreHook(
commandName: commandName,
globalOptions: options.globalOptions,
);
if (preHookExitCode != 0) {
return preHookExitCode;
}
if (options.globalOptions.isVerbose) {
logger.info('Running: dart ${arguments.join(' ')}');
}
final exitCode = await runDartProcess(
arguments: arguments,
workingDirectory: targetDirectory,
environment: getCacheEnv(options.cacheDir),
);
if (exitCode != 0) {
return exitCode;
}
final postHookExitCode = await runPostHook(
commandName: commandName,
globalOptions: options.globalOptions,
);
if (postHookExitCode != 0) {
return postHookExitCode;
}
final afterHookExitCode = await runAfterHook(
commandName: commandName,
globalOptions: options.globalOptions,
);
return afterHookExitCode;
}