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 2a20acaf1e4573148c9a5733ac0b83393ab1d673..6ce58a775a445b9b8edc05e1fb1e796c16a2e829 100644 |
--- a/sdk/lib/_internal/pub/lib/src/global_packages.dart |
+++ b/sdk/lib/_internal/pub/lib/src/global_packages.dart |
@@ -282,52 +282,46 @@ class GlobalPackages { |
/// Finds the active package with [name]. |
/// |
/// Returns an [Entrypoint] loaded with the active package if found. |
- Future<Entrypoint> find(String name) { |
- // TODO(rnystrom): Use async/await here when on __ catch is supported. |
- // See: https://github.com/dart-lang/async_await/issues/27 |
- return new Future.sync(() { |
- var lockFilePath = _getLockFilePath(name); |
- var lockFile; |
+ Future<Entrypoint> find(String name) async { |
+ var lockFilePath = _getLockFilePath(name); |
+ var lockFile; |
+ try { |
+ lockFile = new LockFile.load(lockFilePath, cache.sources); |
+ } on IOException catch (error) { |
+ var oldLockFilePath = p.join(_directory, '$name.lock'); |
try { |
- lockFile = new LockFile.load(lockFilePath, cache.sources); |
+ // TODO(nweiz): This looks for Dart 1.6's old lockfile location. |
+ // Remove it when Dart 1.6 is old enough that we don't think anyone |
+ // will have these lockfiles anymore (issue 20703). |
+ lockFile = new LockFile.load(oldLockFilePath, cache.sources); |
} on IOException catch (error) { |
- var oldLockFilePath = p.join(_directory, '$name.lock'); |
- try { |
- // TODO(nweiz): This looks for Dart 1.6's old lockfile location. |
- // Remove it when Dart 1.6 is old enough that we don't think anyone |
- // will have these lockfiles anymore (issue 20703). |
- lockFile = new LockFile.load(oldLockFilePath, cache.sources); |
- } on IOException catch (error) { |
- // If we couldn't read the lock file, it's not activated. |
- dataError("No active package ${log.bold(name)}."); |
- } |
- |
- // Move the old lockfile to its new location. |
- ensureDir(p.dirname(lockFilePath)); |
- new File(oldLockFilePath).renameSync(lockFilePath); |
+ // If we couldn't read the lock file, it's not activated. |
+ dataError("No active package ${log.bold(name)}."); |
} |
- // Load the package from the cache. |
- var id = lockFile.packages[name]; |
- lockFile.packages.remove(name); |
- |
- var source = cache.sources[id.source]; |
- if (source is CachedSource) { |
- // For cached sources, the package itself is in the cache and the |
- // lockfile is the one we just loaded. |
- return cache.sources[id.source].getDirectory(id) |
- .then((dir) => new Package.load(name, dir, cache.sources)) |
- .then((package) { |
- return new Entrypoint.inMemory(package, lockFile, cache); |
- }); |
- } |
+ // Move the old lockfile to its new location. |
+ ensureDir(p.dirname(lockFilePath)); |
+ new File(oldLockFilePath).renameSync(lockFilePath); |
+ } |
- // For uncached sources (i.e. path), the ID just points to the real |
- // directory for the package. |
- assert(id.source == "path"); |
- return new Entrypoint(PathSource.pathFromDescription(id.description), |
- cache); |
- }); |
+ // Load the package from the cache. |
+ var id = lockFile.packages[name]; |
+ lockFile.packages.remove(name); |
+ |
+ var source = cache.sources[id.source]; |
+ if (source is CachedSource) { |
+ // For cached sources, the package itself is in the cache and the |
+ // lockfile is the one we just loaded. |
+ var dir = await cache.sources[id.source].getDirectory(id); |
+ var package = new Package.load(name, dir, cache.sources); |
+ return new Entrypoint.inMemory(package, lockFile, cache); |
+ } |
+ |
+ // For uncached sources (i.e. path), the ID just points to the real |
+ // directory for the package. |
+ assert(id.source == "path"); |
+ return new Entrypoint(PathSource.pathFromDescription(id.description), |
+ cache); |
} |
/// Runs [package]'s [executable] with [args]. |