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

Unified Diff: sdk/lib/_internal/pub/lib/src/command.dart

Issue 15444003: Use args' command support for pub commands. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Initialize command args in constructor. Created 7 years, 7 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « sdk/lib/_internal/pub/bin/pub.dart ('k') | sdk/lib/_internal/pub/lib/src/command_install.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: sdk/lib/_internal/pub/lib/src/command.dart
diff --git a/sdk/lib/_internal/pub/lib/src/command.dart b/sdk/lib/_internal/pub/lib/src/command.dart
index 68bbf320f0bcf9cb11ae7081bde9b9ab646f27ee..d1f8516dfe375629ab134ecf8dfb3c412b90173f 100644
--- a/sdk/lib/_internal/pub/lib/src/command.dart
+++ b/sdk/lib/_internal/pub/lib/src/command.dart
@@ -27,27 +27,11 @@ import 'utils.dart';
/// The base class for commands for the pub executable.
abstract class PubCommand {
/// The commands that Pub understands.
- static Map<String, PubCommand> get commands {
- var commands = {
- 'cache': new CacheCommand(),
- 'deploy': new DeployCommand(),
- 'help': new HelpCommand(),
- 'install': new InstallCommand(),
- 'publish': new LishCommand(),
- 'update': new UpdateCommand(),
- 'uploader': new UploaderCommand(),
- 'version': new VersionCommand()
- };
- for (var command in commands.values.toList()) {
- for (var alias in command.aliases) {
- commands[alias] = command;
- }
- }
- return commands;
- }
+ static final Map<String, PubCommand> commands = _initCommands();
SystemCache cache;
- ArgResults globalOptions;
+
+ /// The parsed options for this command.
ArgResults commandOptions;
Entrypoint entrypoint;
@@ -67,25 +51,26 @@ abstract class PubCommand {
/// documentation, but they will work when invoked on the command line.
final aliases = const <String>[];
- /// Override this to define command-specific options. The results will be made
- /// available in [commandOptions].
- ArgParser get commandParser => new ArgParser();
+ /// The [ArgParser] for this command.
+ final commandParser = new ArgParser();
/// Override this to use offline-only sources instead of hitting the network.
/// This will only be called before the [SystemCache] is created. After that,
/// it has no effect.
bool get isOffline => false;
- void run(String cacheDir, ArgResults globalOptions_,
- List<String> commandArgs) {
- globalOptions = globalOptions_;
+ PubCommand() {
+ // Allow "--help" after a command to get command help.
+ commandParser.addFlag('help', abbr: 'h', negatable: false,
+ help: 'Print usage information for this command.');
+ }
+
+ void run(String cacheDir, ArgResults options) {
+ commandOptions = options.command;
- try {
- commandOptions = commandParser.parse(commandArgs);
- } on FormatException catch (e) {
- log.error(e.message);
- log.error('Use "pub help" for more information.');
- exit(exit_codes.USAGE);
+ if (commandOptions['help']) {
+ this.printUsage();
+ return;
}
cache = new SystemCache.withSources(cacheDir, isOffline: isOffline);
@@ -113,14 +98,14 @@ abstract class PubCommand {
log.error(message);
if (trace != null) {
- if (globalOptions['trace'] || !isUserFacingException(error)) {
+ if (options['trace'] || !isUserFacingException(error)) {
log.error(trace);
} else {
log.fine(trace);
}
}
- if (globalOptions['trace']) {
+ if (options['trace']) {
log.dumpTranscript();
} else if (!isUserFacingException(error)) {
log.error("""
@@ -198,3 +183,24 @@ and include the results in a bug report on http://dartbug.com/new.
}
}
}
+
+_initCommands() {
+ var commands = {
+ 'cache': new CacheCommand(),
+ 'deploy': new DeployCommand(),
+ 'help': new HelpCommand(),
+ 'install': new InstallCommand(),
+ 'publish': new LishCommand(),
+ 'update': new UpdateCommand(),
+ 'uploader': new UploaderCommand(),
+ 'version': new VersionCommand()
+ };
+
+ for (var command in commands.values.toList()) {
+ for (var alias in command.aliases) {
+ commands[alias] = command;
+ }
+ }
+
+ return commands;
+}
« no previous file with comments | « sdk/lib/_internal/pub/bin/pub.dart ('k') | sdk/lib/_internal/pub/lib/src/command_install.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698