| OLD | NEW |
| 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 import 'dart:async'; | 5 import 'dart:async'; |
| 6 | 6 |
| 7 import '../command.dart'; | 7 import '../command.dart'; |
| 8 import '../exit_codes.dart' as exit_codes; | 8 import '../exit_codes.dart' as exit_codes; |
| 9 import '../io.dart'; | 9 import '../io.dart'; |
| 10 import '../log.dart' as log; | 10 import '../log.dart' as log; |
| 11 import '../source/cached.dart'; | 11 import '../source/cached.dart'; |
| 12 import '../utils.dart'; | 12 import '../utils.dart'; |
| 13 | 13 |
| 14 /// Handles the `cache repair` pub command. | 14 /// Handles the `cache repair` pub command. |
| 15 class CacheRepairCommand extends PubCommand { | 15 class CacheRepairCommand extends PubCommand { |
| 16 String get name => "repair"; | 16 String get name => "repair"; |
| 17 String get description => "Reinstall cached packages."; | 17 String get description => "Reinstall cached packages."; |
| 18 String get invocation => "pub cache repair"; | 18 String get invocation => "pub cache repair"; |
| 19 String get docUrl => "http://dartlang.org/tools/pub/cmd/pub-cache.html"; | 19 String get docUrl => "http://dartlang.org/tools/pub/cmd/pub-cache.html"; |
| 20 bool get takesArguments => false; | 20 bool get takesArguments => false; |
| 21 | 21 |
| 22 Future run() async { | 22 Future run() async { |
| 23 var successes = []; | 23 var successes = []; |
| 24 var failures = []; | 24 var failures = []; |
| 25 | 25 |
| 26 // Repair every cached source. | 26 // Repair every cached source. |
| 27 for (var source in cache.sources) { | 27 for (var source in cache.sources.all |
| 28 .map((source) => cache.source(source.name))) { |
| 28 if (source is! CachedSource) continue; | 29 if (source is! CachedSource) continue; |
| 29 | 30 |
| 30 var results = await source.repairCachedPackages(); | 31 var results = await source.repairCachedPackages(); |
| 31 successes.addAll(results.first); | 32 successes.addAll(results.first); |
| 32 failures.addAll(results.last); | 33 failures.addAll(results.last); |
| 33 } | 34 } |
| 34 | 35 |
| 35 if (successes.length > 0) { | 36 if (successes.length > 0) { |
| 36 var packages = pluralize("package", successes.length); | 37 var packages = pluralize("package", successes.length); |
| 37 log.message("Reinstalled ${log.green(successes.length)} $packages."); | 38 log.message("Reinstalled ${log.green(successes.length)} $packages."); |
| (...skipping 30 matching lines...) Expand all Loading... |
| 68 | 69 |
| 69 if (successes.length == 0 && failures.length == 0) { | 70 if (successes.length == 0 && failures.length == 0) { |
| 70 log.message("No packages in cache, so nothing to repair."); | 71 log.message("No packages in cache, so nothing to repair."); |
| 71 } | 72 } |
| 72 | 73 |
| 73 if (failures.length > 0 || results.last.length > 0) { | 74 if (failures.length > 0 || results.last.length > 0) { |
| 74 await flushThenExit(exit_codes.UNAVAILABLE); | 75 await flushThenExit(exit_codes.UNAVAILABLE); |
| 75 } | 76 } |
| 76 } | 77 } |
| 77 } | 78 } |
| OLD | NEW |