Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(174)

Side by Side Diff: utils/pub/pub.dart

Issue 9950005: First check in for pub package manager. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 8 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
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.
4
5 /**
6 * The main entrypoint for the pub command line application.
7 */
8 #library('pub');
9
10 #import('utils.dart');
11
12 List<PubCommand> commands;
nweiz 2012/03/30 00:38:37 This should probably be a hash.
Bob Nystrom 2012/03/30 01:06:17 Done.
13
14 main() {
15 final args = new Options().arguments;
16
17 commands = [
18 new PubCommand('version', 'print Pub version', showVersion)
nweiz 2012/03/30 00:38:37 Not something worth changing in this CL, but at so
Bob Nystrom 2012/03/30 01:06:17 Good call. Added a TODO.
19 ];
20
21 if (args.length == 0) {
22 showUsage();
23 return;
24 }
25
26 // Select the command.
27 final commandName = args[0];
28 args.removeRange(0, 1);
29
30 for (final command in commands) {
31 if (command.name == commandName) {
32 command.function(args);
33 return;
34 }
35 }
36
37 // If we got here, the command wasn't recognized.
38 print('Unknown command "$commandName".');
39 print('Run "pub help" to see available commands.');
40 exit(64); // EX_USAGE, see http://www.freebsd.org/cgi/man.cgi?query=sysexits.
41 }
42
43 /** Displays usage information for the app. */
44 void showUsage() {
45 print('Pub is a package manager for Dart.');
46 print('');
47 print('Usage:');
48 print('');
49 print(' pub command [arguments]');
50 print('');
51 print('The commands are:');
52 print('');
53
54 int length = 0;
55 commands.forEach((command) => length = Math.max(length, command.name.length));
56
57 for (final command in commands) {
58 print(' ${padRight(command.name, length)} ${command.description}');
nweiz 2012/03/30 00:38:37 I'm not sure two spaces between the command name a
Bob Nystrom 2012/03/30 01:06:17 Done.
59 }
60
61 print('');
62 print('Use "pub help [command]" for more information about a command.');
63 }
64
65 /** Displays pub version information. */
66 void showVersion(List<String> args) {
67 // TODO(rnystrom): Store some place central.
68 print('Pub 0.0.0');
69 }
70
71 typedef void CommandFunction(List<String> args);
72
73 class PubCommand {
74 final String name;
75 final String description;
76 final CommandFunction function;
77
78 PubCommand(this.name, this.description, this.function);
79 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698