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

Side by Side Diff: sdk/lib/_internal/pub_generated/lib/src/command/global_activate.dart

Issue 566093003: Create binstubs for executables when activating a package. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Revise! Created 6 years, 3 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
1 library pub.command.global_activate; 1 library pub.command.global_activate;
2 import 'dart:async'; 2 import 'dart:async';
3 import '../command.dart'; 3 import '../command.dart';
4 import '../utils.dart'; 4 import '../utils.dart';
5 import '../version.dart'; 5 import '../version.dart';
6 class GlobalActivateCommand extends PubCommand { 6 class GlobalActivateCommand extends PubCommand {
7 String get description => "Make a package's executables globally available."; 7 String get description => "Make a package's executables globally available.";
8 String get usage => "pub global activate <package...>"; 8 String get usage => "pub global activate <package...>";
9 bool get takesArguments => true; 9 bool get takesArguments => true;
10 GlobalActivateCommand() { 10 GlobalActivateCommand() {
11 commandParser.addOption( 11 commandParser.addOption(
12 "source", 12 "source",
13 abbr: "s", 13 abbr: "s",
14 help: "The source used to find the package.", 14 help: "The source used to find the package.",
15 allowed: ["git", "hosted", "path"], 15 allowed: ["git", "hosted", "path"],
16 defaultsTo: "hosted"); 16 defaultsTo: "hosted");
17 commandParser.addFlag(
18 "no-executables",
19 negatable: false,
20 help: "Do not put executables on PATH.");
21 commandParser.addOption(
22 "executable",
23 abbr: "x",
24 help: "Executable(s) to place on PATH.",
25 allowMultiple: true);
26 commandParser.addFlag(
27 "overwrite-executables",
28 negatable: false,
29 help: "Overwrite executables from other packages with the same name.");
17 } 30 }
18 Future onRun() { 31 Future onRun() {
32 var executables;
33 if (commandOptions.wasParsed("executable")) {
34 if (commandOptions.wasParsed("no-executables")) {
35 usageError("Cannot pass both --no-executables and --executable.");
36 }
37 executables = commandOptions["executable"];
38 } else if (commandOptions["no-executables"]) {
39 executables = [];
40 }
41 var overwrite = commandOptions["overwrite-executables"];
19 var args = commandOptions.rest; 42 var args = commandOptions.rest;
20 readArg([String error]) { 43 readArg([String error]) {
21 if (args.isEmpty) usageError(error); 44 if (args.isEmpty) usageError(error);
22 var arg = args.first; 45 var arg = args.first;
23 args = args.skip(1); 46 args = args.skip(1);
24 return arg; 47 return arg;
25 } 48 }
26 validateNoExtraArgs() { 49 validateNoExtraArgs() {
27 if (args.isEmpty) return; 50 if (args.isEmpty) return;
28 var unexpected = args.map((arg) => '"$arg"'); 51 var unexpected = args.map((arg) => '"$arg"');
29 var arguments = pluralize("argument", unexpected.length); 52 var arguments = pluralize("argument", unexpected.length);
30 usageError("Unexpected $arguments ${toSentence(unexpected)}."); 53 usageError("Unexpected $arguments ${toSentence(unexpected)}.");
31 } 54 }
32 switch (commandOptions["source"]) { 55 switch (commandOptions["source"]) {
33 case "git": 56 case "git":
34 var repo = readArg("No Git repository given."); 57 var repo = readArg("No Git repository given.");
35 validateNoExtraArgs(); 58 validateNoExtraArgs();
36 return globals.activateGit(repo); 59 return globals.activateGit(
60 repo,
61 executables,
62 overwriteBinStubs: overwrite);
37 case "hosted": 63 case "hosted":
38 var package = readArg("No package to activate given."); 64 var package = readArg("No package to activate given.");
39 var constraint = VersionConstraint.any; 65 var constraint = VersionConstraint.any;
40 if (args.isNotEmpty) { 66 if (args.isNotEmpty) {
41 try { 67 try {
42 constraint = new VersionConstraint.parse(readArg()); 68 constraint = new VersionConstraint.parse(readArg());
43 } on FormatException catch (error) { 69 } on FormatException catch (error) {
44 usageError(error.message); 70 usageError(error.message);
45 } 71 }
46 } 72 }
47 validateNoExtraArgs(); 73 validateNoExtraArgs();
48 return globals.activateHosted(package, constraint); 74 return globals.activateHosted(
75 package,
76 constraint,
77 executables,
78 overwriteBinStubs: overwrite);
49 case "path": 79 case "path":
50 var path = readArg("No package to activate given."); 80 var path = readArg("No package to activate given.");
51 validateNoExtraArgs(); 81 validateNoExtraArgs();
52 return globals.activatePath(path); 82 return globals.activatePath(
83 path,
84 executables,
85 overwriteBinStubs: overwrite);
53 } 86 }
54 throw "unreachable"; 87 throw "unreachable";
55 } 88 }
56 } 89 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698