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); |
+ } |
} |
} |