Index: utils/pub/command_cache.dart |
=================================================================== |
--- utils/pub/command_cache.dart (revision 0) |
+++ utils/pub/command_cache.dart (revision 0) |
@@ -0,0 +1,50 @@ |
+// Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
+// for details. All rights reserved. Use of this source code is governed by a |
+// BSD-style license that can be found in the LICENSE file. |
+ |
+library command_cache; |
+ |
+import 'dart:async'; |
+import 'dart:io'; |
+import 'dart:json' as json; |
+ |
+import 'exit_codes.dart' as exit_codes; |
+import 'log.dart' as log; |
+import 'pub.dart'; |
+ |
+ |
+/// Handles the `cache` pub command. |
+class CacheCommand extends PubCommand { |
+ String get description => "Inspect the system cache."; |
+ String get usage => 'pub cache list'; |
+ bool get requiresEntrypoint => false; |
+ |
+ Future onRun() { |
+ if (commandOptions.rest.length != 1) { |
+ log.error('The cache command expects one argument.'); |
+ this.printUsage(); |
+ exit(exit_codes.USAGE); |
+ } |
+ |
+ if ((commandOptions.rest[0] != 'list')) { |
+ log.error('Unknown cache command "${commandOptions.rest[0]}".'); |
+ this.printUsage(); |
+ exit(exit_codes.USAGE); |
+ } |
+ |
+ // TODO(keertip): Add flag to list packages from non default sources |
+ return cache.sources.defaultSource.getCachedPackages().then((packages){ |
+ var packagesObj = <String, Map>{}; |
+ for (var package in packages){ |
+ packagesObj[package.name] = { |
+ 'version': package.version.toString(), |
+ 'location': package.dir |
+ }; |
+ } |
+ // TODO(keertip): Add support for non-JSON format |
+ // and check for --format flag |
+ log.message( json.stringify({'packages': packagesObj})); |
+ }); |
+ } |
+} |
+ |