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

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

Issue 354763006: Add a "pub global run" command. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Revise! Created 6 years, 6 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/lib/src/executable.dart ('k') | sdk/lib/_internal/pub/lib/src/utils.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/global_packages.dart
diff --git a/sdk/lib/_internal/pub/lib/src/global_packages.dart b/sdk/lib/_internal/pub/lib/src/global_packages.dart
index eb4864f0fc8f75b6f0d796cce2a631748d929a2f..37981460b5746fce2b96e7babb6e0e9470427341 100644
--- a/sdk/lib/_internal/pub/lib/src/global_packages.dart
+++ b/sdk/lib/_internal/pub/lib/src/global_packages.dart
@@ -10,6 +10,7 @@ import 'dart:io';
import 'package:path/path.dart' as p;
+import 'entrypoint.dart';
import 'io.dart';
import 'lock_file.dart';
import 'log.dart' as log;
@@ -50,13 +51,11 @@ class GlobalPackages {
/// Finds the latest version of the hosted package with [name] that matches
/// [constraint] and makes it the active global version.
Future activate(String name, VersionConstraint constraint) {
- var lockFilePath = p.join(_directory, name + ".lock");
-
// See if we already have it activated.
var lockFile;
var currentVersion;
try {
- lockFile = new LockFile.load(lockFilePath, cache.sources);
+ lockFile = new LockFile.load(_getLockFilePath(name), cache.sources);
currentVersion = lockFile.packages[name].version;
// Pull the root package out of the lock file so the solver doesn't see
@@ -66,7 +65,7 @@ class GlobalPackages {
log.message("Package ${log.bold(name)} is already active at "
"version ${log.bold(currentVersion)}.");
} on IOException catch (error) {
- // If we couldn't read the lock and version file, it's not activated.
+ // If we couldn't read the lock file, it's not activated.
lockFile = new LockFile.empty();
}
@@ -98,7 +97,7 @@ class GlobalPackages {
lockFile.packages[name] = id;
ensureDir(_directory);
- writeTextFile(lockFilePath,
+ writeTextFile(_getLockFilePath(name),
lockFile.serialize(cache.rootDir, cache.sources));
log.message("Activated ${log.bold(package.name)} ${package.version}.");
@@ -123,6 +122,35 @@ class GlobalPackages {
}
}
+ /// Finds the active packge with [name].
+ ///
+ /// Returns an [Entrypoint] loaded with the active package if found.
+ Future<Entrypoint> find(String name) {
+ var lockFile;
+ var version;
+ return syncFuture(() {
+ try {
+ lockFile = new LockFile.load(_getLockFilePath(name), cache.sources);
+ version = lockFile.packages[name].version;
+ } on IOException catch (error) {
+ // If we couldn't read the lock file, it's not activated.
+ dataError("No active package ${log.bold(name)}.");
+ }
+ }).then((_) {
+ // Load the package from the cache.
+ var id = new PackageId(name, _source.name, version, name);
+ return _source.getDirectory(id);
+ }).then((dir) {
+ return new Package.load(name, dir, cache.sources);
+ }).then((package) {
+ // Pull the root package out of the lock file so the solver doesn't see
+ // it.
+ lockFile.packages.remove(name);
+
+ return new Entrypoint.inMemory(package, lockFile, cache);
+ });
+ }
+
/// Picks the best version of [package] to activate that meets [constraint].
///
/// If [version] is not `null`, this tries to maintain that version if
@@ -149,4 +177,7 @@ class GlobalPackages {
return versions.last;
});
}
+
+ /// Gets the path to the lock file for an activated package with [name].
+ String _getLockFilePath(name) => p.join(_directory, name + ".lock");
}
« no previous file with comments | « sdk/lib/_internal/pub/lib/src/executable.dart ('k') | sdk/lib/_internal/pub/lib/src/utils.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698