Chromium Code Reviews

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

Issue 428313004: Support activating packages from local paths. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View unified diff | | Annotate | Revision Log
OLDNEW
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_activate; 5 library pub.command.global_activate;
6 6
7 import 'dart:async'; 7 import 'dart:async';
8 8
9 import '../command.dart'; 9 import '../command.dart';
10 import '../utils.dart'; 10 import '../utils.dart';
11 import '../version.dart'; 11 import '../version.dart';
12 12
13 /// Handles the `global activate` pub command. 13 /// Handles the `global activate` pub command.
14 class GlobalActivateCommand extends PubCommand { 14 class GlobalActivateCommand extends PubCommand {
15 String get description => "Make a package's executables globally available."; 15 String get description => "Make a package's executables globally available.";
16 String get usage => "pub global activate <package> [version]"; 16 String get usage => "pub global activate [--source source] <package> [version] ";
nweiz 2014/07/31 20:01:53 Long line. Also, normally we don't include options
Bob Nystrom 2014/08/04 23:41:50 Tweaked it a bit.
17 bool get takesArguments => true; 17 bool get takesArguments => true;
18 18
19 GlobalActivateCommand() {
20 commandParser.addOption("source",
21 abbr: "s",
22 help: "The source used to find the package.",
23 allowed: ["git", "hosted", "path"],
24 defaultsTo: "hosted");
25 }
26
19 Future onRun() { 27 Future onRun() {
20 // Make sure there is a package. 28 var args = commandOptions.rest;
21 if (commandOptions.rest.isEmpty) { 29
22 usageError("No package to activate given."); 30 readArg(String error) {
31 if (args.isEmpty) usageError(error);
32 var arg = args.first;
33 args = args.skip(1);
34 return arg;
23 } 35 }
24 36
25 // Don't allow extra arguments. 37 validateNoExtraArgs() {
26 if (commandOptions.rest.length > 2) { 38 if (args.isEmpty) return;
27 var unexpected = commandOptions.rest.skip(2).map((arg) => '"$arg"'); 39 var unexpected = args.map((arg) => '"$arg"');
28 var arguments = pluralize("argument", unexpected.length); 40 var arguments = pluralize("argument", unexpected.length);
29 usageError("Unexpected $arguments ${toSentence(unexpected)}."); 41 usageError("Unexpected $arguments ${toSentence(unexpected)}.");
30 } 42 }
31 43
32 var package = commandOptions.rest.first; 44 var package = readArg("No package to activate given.");
33 45
34 // Parse the version constraint, if there is one. 46 switch (commandOptions["source"]) {
35 var constraint = VersionConstraint.any; 47 case "git":
36 if (commandOptions.rest.length == 2) { 48 // Parse the git ref.
37 try { 49 // TODO(bob): Test.
nweiz 2014/07/31 20:01:53 Remove this
Bob Nystrom 2014/08/04 23:41:50 Done.
38 constraint = new VersionConstraint.parse(commandOptions.rest[1]); 50 var ref = readArg("Must provide a Git ref for the package.");
nweiz 2014/07/31 20:01:53 Why does the user have to supply a ref for git? Gi
Bob Nystrom 2014/08/04 23:41:50 I think I just got my terminology confused here. T
39 } on FormatException catch (error) { 51 validateNoExtraArgs();
40 usageError(error.message); 52 return globals.activateGit(package, ref);
41 } 53
54 case "hosted":
55 // Parse the version constraint, if there is one.
56 var constraint = VersionConstraint.any;
57 if (args.isNotEmpty) {
58 try {
59 constraint = new VersionConstraint.parse(readArg(""));
nweiz 2014/07/31 20:01:53 Passing an empty string to parseArg here reads wei
Bob Nystrom 2014/08/04 23:41:50 Done.
60 } on FormatException catch (error) {
61 usageError(error.message);
62 }
63 }
64
65 validateNoExtraArgs();
66 return globals.activateHosted(package, constraint);
67
68 case "path":
69 validateNoExtraArgs();
70 return globals.activatePath(package);
42 } 71 }
43 72
44 return globals.activate(package, constraint); 73 throw "unreachable";
45 } 74 }
46 } 75 }
OLDNEW

Powered by Google App Engine