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

Unified Diff: lib/src/global_packages.dart

Issue 1281043004: Make LockFile immutable. (Closed) Base URL: git@github.com:dart-lang/pub.git@master
Patch Set: Created 5 years, 4 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
Index: lib/src/global_packages.dart
diff --git a/lib/src/global_packages.dart b/lib/src/global_packages.dart
index 5c280b13c5c77dbe751293ddcd70f11cf2cab470..bef3893717222fa16b4eacd7f60887a2f75a9c5c 100644
--- a/lib/src/global_packages.dart
+++ b/lib/src/global_packages.dart
@@ -140,7 +140,7 @@ class GlobalPackages {
// TODO(rnystrom): Look in "bin" and display list of binaries that
// user can run.
- _writeLockFile(name, new LockFile([id]));
+ _writeLockFile(name, new LockFile([id], cache.sources));
var binDir = p.join(_directory, name, 'bin');
if (dirExists(binDir)) deleteEntry(binDir);
@@ -169,7 +169,7 @@ class GlobalPackages {
// Make sure all of the dependencies are locally installed.
var ids = await Future.wait(result.packages.map(_cacheDependency));
- var lockFile = new LockFile(ids);
+ var lockFile = new LockFile(ids, cache.sources);
// Load the package graph from [result] so we don't need to re-parse all
// the pubspecs.
@@ -230,8 +230,7 @@ class GlobalPackages {
var oldPath = p.join(_directory, "$package.lock");
if (fileExists(oldPath)) deleteEntry(oldPath);
- writeTextFile(_getLockFilePath(package),
- lockFile.serialize(cache.rootDir, cache.sources));
+ writeTextFile(_getLockFilePath(package), lockFile.serialize(cache.rootDir));
var id = lockFile.packages[package];
log.message('Activated ${_formatPackage(id)}.');
@@ -304,9 +303,13 @@ class GlobalPackages {
new File(oldLockFilePath).renameSync(lockFilePath);
}
- // Load the package from the cache.
- var id = lockFile.packages[name];
- lockFile.packages.remove(name);
+ // Remove the package itself from the lockfile. We put it in there so we
+ // could find and load the [Package] object, but normally an entrypoint
+ // doesn't expect to be in itw own lockfile.
Bob Nystrom 2015/08/07 21:50:56 "itw" -> "its"
nweiz 2015/08/07 22:16:07 Done.
+ var packages = new Map.from(lockFile.packages);
+ var id = packages[name];
+ packages.remove(name);
+ lockFile = new LockFile(packages.values, cache.sources);
var source = cache.sources[id.source];
if (source is CachedSource) {
« no previous file with comments | « lib/src/entrypoint.dart ('k') | lib/src/lock_file.dart » ('j') | lib/src/lock_file.dart » ('J')

Powered by Google App Engine
This is Rietveld 408576698