Index: lib/src/entrypoint.dart |
diff --git a/lib/src/entrypoint.dart b/lib/src/entrypoint.dart |
index 8e8b7921fd15105722405e9d94c5d21f2b332af3..9a6cded000e8a78807d212fc1d2f7211086e974b 100644 |
--- a/lib/src/entrypoint.dart |
+++ b/lib/src/entrypoint.dart |
@@ -402,8 +402,8 @@ class Entrypoint { |
/// |
/// Note: this assumes [isLockFileUpToDate] has already been called and |
/// returned `true`. |
- Future<bool> _arePackagesAvailable(LockFile lockFile) { |
- return Future.wait(lockFile.packages.values.map((package) { |
+ bool _arePackagesAvailable(LockFile lockFile) { |
+ return lockFile.packages.values.every((package) { |
var source = cache.sources[package.source]; |
// This should only be called after [_isLockFileUpToDate] has returned |
@@ -413,16 +413,12 @@ class Entrypoint { |
// We only care about cached sources. Uncached sources aren't "installed". |
// If one of those is missing, we want to show the user the file not |
// found error later since installing won't accomplish anything. |
- if (source is! CachedSource) return new Future.value(true); |
+ if (source is! CachedSource) return true; |
// Get the directory. |
- return source.getDirectory(package).then((dir) { |
- // See if the directory is there and looks like a package. |
- return dirExists(dir) || fileExists(path.join(dir, "pubspec.yaml")); |
- }); |
- })).then((results) { |
- // Make sure they are all true. |
- return results.every((result) => result); |
+ var dir = source.getDirectory(package); |
+ // See if the directory is there and looks like a package. |
+ return dirExists(dir) || fileExists(path.join(dir, "pubspec.yaml")); |
}); |
} |
@@ -436,7 +432,7 @@ class Entrypoint { |
// If we do have a lock file, we still need to make sure the packages are |
// actually installed. The user may have just gotten a package that |
// includes a lockfile. |
- if (await _arePackagesAvailable(lockFile)) return; |
+ if (_arePackagesAvailable(lockFile)) return; |
// If we don't have a current lock file, we definitely need to install. |
log.message( |
@@ -461,27 +457,27 @@ class Entrypoint { |
var graph = await log.progress("Loading package graph", () async { |
if (result != null) { |
- var packages = await Future.wait(result.packages.map((id) async { |
+ var packages = new Map.fromIterable(result.packages, |
+ key: (id) => id.name, |
+ value: (id) { |
if (id.name == root.name) return root; |
- var dir = await cache.sources[id.source].getDirectory(id); |
- return new Package(result.pubspecs[id.name], dir); |
- })); |
+ return new Package(result.pubspecs[id.name], |
+ cache.sources[id.source].getDirectory(id)); |
+ }); |
- return new PackageGraph(this, new LockFile(result.packages), |
- new Map.fromIterable(packages, key: (package) => package.name)); |
+ return new PackageGraph(this, new LockFile(result.packages), packages); |
} |
await ensureLockFileIsUpToDate(); |
- var packages = await Future.wait(lockFile.packages.values.map((id) async { |
- var source = cache.sources[id.source]; |
- var dir = await source.getDirectory(id); |
+ var packages = new Map.fromIterable(lockFile.packages.values, |
+ key: (id) => id.name, |
+ value: (id) { |
+ var dir = cache.sources[id.source].getDirectory(id); |
return new Package.load(id.name, dir, cache.sources); |
- })); |
- |
- var packageMap = new Map.fromIterable(packages, key: (p) => p.name); |
- packageMap[root.name] = root; |
- return new PackageGraph(this, lockFile, packageMap); |
+ }); |
+ packages[root.name] = root; |
+ return new PackageGraph(this, lockFile, packages); |
}, fine: true); |
_packageGraph = graph; |