Chromium Code Reviews| 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 library pub.command.global_run; | 5 library pub.command.global_run; |
| 6 | 6 |
| 7 import 'dart:async'; | 7 import 'dart:async'; |
| 8 import 'dart:io'; | 8 import 'dart:io'; |
| 9 | 9 |
| 10 import 'package:barback/barback.dart'; | 10 import 'package:barback/barback.dart'; |
| 11 import 'package:path/path.dart' as path; | 11 import 'package:path/path.dart' as path; |
| 12 import 'package:stack_trace/stack_trace.dart'; | 12 import 'package:stack_trace/stack_trace.dart'; |
| 13 | 13 |
| 14 import '../barback/asset_environment.dart'; | 14 import '../barback/asset_environment.dart'; |
| 15 import '../command.dart'; | 15 import '../command.dart'; |
| 16 import '../entrypoint.dart'; | 16 import '../entrypoint.dart'; |
| 17 import '../executable.dart'; | 17 import '../executable.dart'; |
| 18 import '../exit_codes.dart' as exit_codes; | 18 import '../exit_codes.dart' as exit_codes; |
| 19 import '../io.dart'; | 19 import '../io.dart'; |
| 20 import '../log.dart' as log; | 20 import '../log.dart' as log; |
| 21 import '../utils.dart'; | 21 import '../utils.dart'; |
| 22 | 22 |
| 23 /// Handles the `global run` pub command. | 23 /// Handles the `global run` pub command. |
| 24 class GlobalRunCommand extends PubCommand { | 24 class GlobalRunCommand extends PubCommand { |
| 25 bool get takesArguments => true; | 25 bool get takesArguments => true; |
| 26 bool get allowTrailingOptions => false; | 26 bool get allowTrailingOptions => false; |
| 27 String get description => | 27 String get description => |
| 28 "Run an executable from a globally activated package."; | 28 "Run an executable from a globally activated package."; |
| 29 String get usage => "pub global run <package> <executable> [args...]"; | 29 String get usage => "pub global run <package>:<executable> [args...]"; |
| 30 | 30 |
| 31 Future onRun() { | 31 Future onRun() { |
| 32 if (commandOptions.rest.isEmpty) { | 32 if (commandOptions.rest.isEmpty) { |
| 33 usageError("Must specify a package and executable to run."); | |
| 34 } | |
| 35 | |
| 36 if (commandOptions.rest.length == 1) { | |
| 37 usageError("Must specify an executable to run."); | 33 usageError("Must specify an executable to run."); |
| 38 } | 34 } |
| 39 | 35 |
| 40 var package = commandOptions.rest[0]; | 36 if (!commandOptions.rest[0].contains(":")) { |
| 41 var executable = commandOptions.rest[1]; | 37 // TODO(rnystrom): Allow "foo" as a synonym for "foo:foo"? |
|
nweiz
2014/07/17 07:15:10
+1
| |
| 42 var args = commandOptions.rest.skip(2); | 38 usageError("Must specify a package from which to run the executable."); |
| 39 } | |
| 40 | |
| 41 var parts = split1(commandOptions.rest[0], ":"); | |
| 42 var package = parts[0]; | |
| 43 var executable = parts[1]; | |
| 44 var args = commandOptions.rest.skip(1).toList(); | |
| 43 | 45 |
| 44 return globals.find(package).then((entrypoint) { | 46 return globals.find(package).then((entrypoint) { |
| 45 return runExecutable(this, entrypoint, package, executable, args); | 47 return runExecutable(this, entrypoint, package, executable, args); |
| 46 }).then(flushThenExit); | 48 }).then(flushThenExit); |
| 47 } | 49 } |
| 48 } | 50 } |
| OLD | NEW |