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

Unified Diff: utils/pub/entrypoint.dart

Issue 11783009: Big merge from experimental to bleeding edge. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 7 years, 11 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 | « utils/pub/curl_client.dart ('k') | utils/pub/git.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: utils/pub/entrypoint.dart
diff --git a/utils/pub/entrypoint.dart b/utils/pub/entrypoint.dart
index b52a139ed670156c1ad2ef4d8d2bef0ba840ab19..457d480f687c54379dce5052983756039d890c64 100644
--- a/utils/pub/entrypoint.dart
+++ b/utils/pub/entrypoint.dart
@@ -4,6 +4,7 @@
library entrypoint;
+import 'dart:async';
import 'io.dart';
import 'lock_file.dart';
import 'log.dart' as log;
@@ -46,7 +47,7 @@ class Entrypoint {
/// Loads the entrypoint from a package at [rootDir].
static Future<Entrypoint> load(String rootDir, SystemCache cache) {
- return Package.load(null, rootDir, cache.sources).transform((package) =>
+ return Package.load(null, rootDir, cache.sources).then((package) =>
new Entrypoint(package, cache));
}
@@ -70,26 +71,26 @@ class Entrypoint {
if (pendingOrCompleted != null) return pendingOrCompleted;
var packageDir = join(path, id.name);
- var future = ensureDir(dirname(packageDir)).chain((_) {
+ var future = ensureDir(dirname(packageDir)).then((_) {
return exists(packageDir);
- }).chain((exists) {
+ }).then((exists) {
if (!exists) return new Future.immediate(null);
// TODO(nweiz): figure out when to actually delete the directory, and when
// we can just re-use the existing symlink.
log.fine("Deleting package directory for ${id.name} before install.");
return deleteDir(packageDir);
- }).chain((_) {
+ }).then((_) {
if (id.source.shouldCache) {
- return cache.install(id).chain(
+ return cache.install(id).then(
(pkg) => createPackageSymlink(id.name, pkg.dir, packageDir));
} else {
- return id.source.install(id, packageDir).transform((found) {
+ return id.source.install(id, packageDir).then((found) {
if (found) return null;
// TODO(nweiz): More robust error-handling.
throw 'Package ${id.name} not found in source "${id.source.name}".';
});
}
- }).chain((_) => id.resolved);
+ }).then((_) => id.resolved);
_installs[id] = future;
@@ -101,8 +102,8 @@ class Entrypoint {
/// completes when all dependencies are installed.
Future installDependencies() {
return loadLockFile()
- .chain((lockFile) => resolveVersions(cache.sources, root, lockFile))
- .chain(_installDependencies);
+ .then((lockFile) => resolveVersions(cache.sources, root, lockFile))
+ .then(_installDependencies);
}
/// Installs the latest available versions of all dependencies of the [root]
@@ -110,33 +111,33 @@ class Entrypoint {
/// [Future] that completes when all dependencies are installed.
Future updateAllDependencies() {
return resolveVersions(cache.sources, root, new LockFile.empty())
- .chain(_installDependencies);
+ .then(_installDependencies);
}
/// Installs the latest available versions of [dependencies], while leaving
/// other dependencies as specified by the [LockFile] if possible. Returns a
/// [Future] that completes when all dependencies are installed.
Future updateDependencies(List<String> dependencies) {
- return loadLockFile().chain((lockFile) {
+ return loadLockFile().then((lockFile) {
var versionSolver = new VersionSolver(cache.sources, root, lockFile);
for (var dependency in dependencies) {
versionSolver.useLatestVersion(dependency);
}
return versionSolver.solve();
- }).chain(_installDependencies);
+ }).then(_installDependencies);
}
/// Removes the old packages directory, installs all dependencies listed in
/// [packageVersions], and writes a [LockFile].
Future _installDependencies(List<PackageId> packageVersions) {
- return cleanDir(path).chain((_) {
- return Futures.wait(packageVersions.map((id) {
+ return cleanDir(path).then((_) {
+ return Futures.wait(packageVersions.mappedBy((id) {
if (id.source is RootSource) return new Future.immediate(id);
return install(id);
}));
- }).chain(_saveLockFile)
- .chain(_installSelfReference)
- .chain(_linkSecondaryPackageDirs);
+ }).then(_saveLockFile)
+ .then(_installSelfReference)
+ .then(_linkSecondaryPackageDirs);
}
/// Loads the list of concrete package versions from the `pubspec.lock`, if it
@@ -145,13 +146,13 @@ class Entrypoint {
var lockFilePath = join(root.dir, 'pubspec.lock');
log.fine("Loading lockfile.");
- return fileExists(lockFilePath).chain((exists) {
+ return fileExists(lockFilePath).then((exists) {
if (!exists) {
log.fine("No lock file at $lockFilePath, creating empty one.");
return new Future<LockFile>.immediate(new LockFile.empty());
}
- return readTextFile(lockFilePath).transform((text) =>
+ return readTextFile(lockFilePath).then((text) =>
new LockFile.parse(text, cache.sources));
});
}
@@ -172,10 +173,10 @@ class Entrypoint {
/// allow a package to import its own files using `package:`.
Future _installSelfReference(_) {
var linkPath = join(path, root.name);
- return exists(linkPath).chain((exists) {
+ return exists(linkPath).then((exists) {
// Create the symlink if it doesn't exist.
if (exists) return new Future.immediate(null);
- return ensureDir(path).chain(
+ return ensureDir(path).then(
(_) => createPackageSymlink(root.name, root.dir, linkPath,
isSelfLink: true));
});
@@ -190,25 +191,25 @@ class Entrypoint {
var testDir = join(root.dir, 'test');
var toolDir = join(root.dir, 'tool');
var webDir = join(root.dir, 'web');
- return dirExists(binDir).chain((exists) {
+ return dirExists(binDir).then((exists) {
if (!exists) return new Future.immediate(null);
return _linkSecondaryPackageDir(binDir);
- }).chain((_) => _linkSecondaryPackageDirsRecursively(exampleDir))
- .chain((_) => _linkSecondaryPackageDirsRecursively(testDir))
- .chain((_) => _linkSecondaryPackageDirsRecursively(toolDir))
- .chain((_) => _linkSecondaryPackageDirsRecursively(webDir));
+ }).then((_) => _linkSecondaryPackageDirsRecursively(exampleDir))
+ .then((_) => _linkSecondaryPackageDirsRecursively(testDir))
+ .then((_) => _linkSecondaryPackageDirsRecursively(toolDir))
+ .then((_) => _linkSecondaryPackageDirsRecursively(webDir));
}
/// Creates a symlink to the `packages` directory in [dir] and all its
/// subdirectories.
Future _linkSecondaryPackageDirsRecursively(String dir) {
- return dirExists(dir).chain((exists) {
+ return dirExists(dir).then((exists) {
if (!exists) return new Future.immediate(null);
return _linkSecondaryPackageDir(dir)
- .chain((_) => _listDirWithoutPackages(dir))
- .chain((files) {
- return Futures.wait(files.map((file) {
- return dirExists(file).chain((isDir) {
+ .then((_) => _listDirWithoutPackages(dir))
+ .then((files) {
+ return Futures.wait(files.mappedBy((file) {
+ return dirExists(file).then((isDir) {
if (!isDir) return new Future.immediate(null);
return _linkSecondaryPackageDir(file);
});
@@ -221,25 +222,25 @@ class Entrypoint {
/// Recursively lists the contents of [dir], excluding hidden `.DS_Store`
/// files and `package` files.
Future<List<String>> _listDirWithoutPackages(dir) {
- return listDir(dir).chain((files) {
- return Futures.wait(files.map((file) {
+ return listDir(dir).then((files) {
+ return Futures.wait(files.mappedBy((file) {
if (basename(file) == 'packages') return new Future.immediate([]);
- return dirExists(file).chain((isDir) {
+ return dirExists(file).then((isDir) {
if (!isDir) return new Future.immediate([]);
return _listDirWithoutPackages(file);
- }).transform((subfiles) {
+ }).then((subfiles) {
var fileAndSubfiles = [file];
fileAndSubfiles.addAll(subfiles);
return fileAndSubfiles;
});
}));
- }).transform(flatten);
+ }).then(flatten);
}
/// Creates a symlink to the `packages` directory in [dir] if none exists.
Future _linkSecondaryPackageDir(String dir) {
var to = join(dir, 'packages');
- return exists(to).chain((exists) {
+ return exists(to).then((exists) {
if (exists) return new Future.immediate(null);
return createSymlink(path, to);
});
« no previous file with comments | « utils/pub/curl_client.dart ('k') | utils/pub/git.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698