| Index: lib/src/command/cache_repair.dart
|
| diff --git a/lib/src/command/cache_repair.dart b/lib/src/command/cache_repair.dart
|
| index 3e130e96904d6fa468a57b15a94a7f4011335d51..53b0f0211e7705d6b4f00b8baa883219f78c5f8d 100644
|
| --- a/lib/src/command/cache_repair.dart
|
| +++ b/lib/src/command/cache_repair.dart
|
| @@ -22,43 +22,58 @@ class CacheRepairCommand extends PubCommand {
|
| bool get takesArguments => false;
|
|
|
| Future run() async {
|
| - var successes = 0;
|
| - var failures = 0;
|
| + var successes = [];
|
| + var failures = [];
|
|
|
| // Repair every cached source.
|
| for (var source in cache.sources) {
|
| if (source is! CachedSource) continue;
|
|
|
| var results = await source.repairCachedPackages();
|
| - successes += results.first;
|
| - failures += results.last;
|
| + successes.addAll(results.first);
|
| + failures.addAll(results.last);
|
| }
|
|
|
| - if (successes > 0) {
|
| - var packages = pluralize("package", successes);
|
| - log.message("Reinstalled ${log.green(successes)} $packages.");
|
| + if (successes.length > 0) {
|
| + var packages = pluralize("package", successes.length);
|
| + log.message("Reinstalled ${log.green(successes.length)} $packages.");
|
| }
|
|
|
| - if (failures > 0) {
|
| - var packages = pluralize("package", failures);
|
| - log.message("Failed to reinstall ${log.red(failures)} $packages.");
|
| + if (failures.length > 0) {
|
| + var packages = pluralize("package", failures.length);
|
| + var buffer = new StringBuffer(
|
| + "Failed to reinstall ${log.red(failures.length)} $packages:\n");
|
| +
|
| + for (var id in failures) {
|
| + buffer.write("- ${log.bold(id.name)} ${id.version}");
|
| + if (cache.sources[id.source] != cache.sources.defaultSource) {
|
| + buffer.write(" from ${id.source}");
|
| + }
|
| + buffer.writeln();
|
| + }
|
| +
|
| + log.message(buffer.toString());
|
| }
|
|
|
| var results = await globals.repairActivatedPackages();
|
| - if (results.first > 0) {
|
| - var packages = pluralize("package", results.first);
|
| - log.message("Reactivated ${log.green(results.first)} $packages.");
|
| + if (results.first.length > 0) {
|
| + var packages = pluralize("package", results.first.length);
|
| + log.message("Reactivated ${log.green(results.first.length)} $packages.");
|
| }
|
|
|
| - if (results.last > 0) {
|
| - var packages = pluralize("package", results.last);
|
| - log.message("Failed to reactivate ${log.red(results.last)} $packages.");
|
| + if (results.last.length > 0) {
|
| + var packages = pluralize("package", results.last.length);
|
| + log.message(
|
| + "Failed to reactivate ${log.red(results.last.length)} $packages:\n" +
|
| + results.last.map((name) => "- ${log.bold(name)}").join("\n"));
|
| }
|
|
|
| - if (successes == 0 && failures == 0) {
|
| + if (successes.length == 0 && failures.length == 0) {
|
| log.message("No packages in cache, so nothing to repair.");
|
| }
|
|
|
| - if (failures > 0) await flushThenExit(exit_codes.UNAVAILABLE);
|
| + if (failures.length > 0 || results.last.length > 0) {
|
| + await flushThenExit(exit_codes.UNAVAILABLE);
|
| + }
|
| }
|
| }
|
|
|