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

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

Issue 103453005: Show detailed report on upgrade. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 7 years 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
Index: sdk/lib/_internal/pub/lib/src/entrypoint.dart
diff --git a/sdk/lib/_internal/pub/lib/src/entrypoint.dart b/sdk/lib/_internal/pub/lib/src/entrypoint.dart
index cf7e5d08caef977e0c17e1494d6878d7a37f7f85..e2e60dc7bed4ba6fdf3a707eca97a08deecc520c 100644
--- a/sdk/lib/_internal/pub/lib/src/entrypoint.dart
+++ b/sdk/lib/_internal/pub/lib/src/entrypoint.dart
@@ -109,60 +109,33 @@ class Entrypoint {
return future;
}
- /// Gets all dependencies of the [root] package, respecting the [LockFile]
- /// if present.
+ /// Gets all dependencies of the [root] package.
///
- /// Returns a [Future] that completes when all dependencies are available.
- Future getDependencies() {
- return new Future.sync(() {
- return resolveVersions(cache.sources, root, lockFile: loadLockFile());
- }).then(_getDependencies);
- }
-
- /// Gets the latest available versions of all dependencies of the [root]
- /// package, writing a new [LockFile].
+ /// [useLatest], if provided, defines a list of packages that will be
+ /// unlocked and upgraded to their latest versions. If [upgradeAll] is
+ /// true, the previous lockfile is ignored and all packages are re-resolved
+ /// from scratch. Otherwise, it will attempt to preserve the versions of all
+ /// previously locked packages.
nweiz 2013/12/11 06:48:32 It sounds like [useLatest] won't do anything if [u
Bob Nystrom 2013/12/11 22:36:59 They are actually orthogonal. useLatest *forces* t
///
- /// Returns a [Future] that completes when all dependencies are available.
- Future upgradeAllDependencies() {
- return resolveVersions(cache.sources, root).then(_getDependencies);
- }
-
- /// Gets the latest available versions of [dependencies], while leaving
- /// other dependencies as specified by the [LockFile] if possible.
+ /// If [useLatest] is non-empty or [upgradeAll] is true, displays a detailed
+ /// report of the changes made relative to the previous lockfile.
nweiz 2013/12/11 06:48:32 Explain that this is a temporary situation. Ideall
Bob Nystrom 2013/12/11 22:36:59 Added a TODO below by the report code.
///
- /// Returns a [Future] that completes when all dependencies are available.
- Future upgradeDependencies(List<String> dependencies) {
- return new Future.sync(() {
- return resolveVersions(cache.sources, root,
- lockFile: loadLockFile(), useLatest: dependencies);
- }).then(_getDependencies);
- }
+ /// Returns a [Future] that completes to the number of changed dependencies.
+ /// It completes when all dependencies are available.
+ Future<int> getDependencies({List<String> useLatest, bool upgradeAll}) {
nweiz 2013/12/11 06:48:32 I don't think I like [getDependencies] as the name
Bob Nystrom 2013/12/11 22:36:59 Yeah, I'm not crazy about it either. Changed to "a
+ if (upgradeAll == null) upgradeAll = false;
nweiz 2013/12/11 06:48:32 I like using explicit defaults for boolean paramet
Bob Nystrom 2013/12/11 22:36:59 That breaks forwarding. :( upgradeAll is passed t
nweiz 2013/12/11 23:31:27 I don't think we should expect or support null for
Bob Nystrom 2013/12/12 00:14:58 OK, done.
+
+ var numChanged = 0;
- /// Removes the old packages directory, gets all dependencies listed in
- /// [result], and writes a [LockFile].
- Future _getDependencies(SolveResult result) {
return new Future.sync(() {
+ return resolveVersions(cache.sources, root, lockFile: loadLockFile(),
+ useLatest: useLatest, upgradeAll: upgradeAll);
+ }).then((result) {
if (!result.succeeded) throw result.error;
- // Warn the user if any overrides were in effect.
- if (result.overrides.isNotEmpty) {
- var buffer = new StringBuffer();
- buffer.write("Warning: You are using these overridden dependencies:");
- for (var override in result.overrides) {
- var source = cache.sources[override.source];
- buffer.write("\n- ${override.name}");
- if (override.constraint != VersionConstraint.any) {
- buffer.write(" version ${override.constraint}");
- }
- if (source != cache.sources.defaultSource) {
- var description = source.formatDescription(root.dir,
- override.description);
- buffer.write(" (from ${override.source} $description)");
- }
- }
- log.warning(buffer);
- }
+ numChanged = result.showReport(showAll: useLatest != null || upgradeAll);
+ // Install the packages.
cleanDir(packagesDir);
return Future.wait(result.packages.map((id) {
if (id.isRoot) return new Future.value(id);
@@ -172,6 +145,8 @@ class Entrypoint {
_saveLockFile(ids);
_linkSelf();
_linkSecondaryPackageDirs();
+
+ return numChanged;
});
}

Powered by Google App Engine
This is Rietveld 408576698