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

Unified Diff: lib/src/global_packages.dart

Issue 2044253003: Refactor Source and SourceRegistry. (Closed) Base URL: git@github.com:dart-lang/pub.git@master
Patch Set: Rename LiveSource to BoundSource. Created 4 years, 6 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 | « lib/src/entrypoint.dart ('k') | lib/src/lock_file.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: lib/src/global_packages.dart
diff --git a/lib/src/global_packages.dart b/lib/src/global_packages.dart
index dd6865ac6cbb0925f615beffac4afed71500eebe..451a084de50aeac2f1c888c74780731d907843cf 100644
--- a/lib/src/global_packages.dart
+++ b/lib/src/global_packages.dart
@@ -21,9 +21,6 @@ import 'pubspec.dart';
import 'sdk.dart' as sdk;
import 'solver/version_solver.dart';
import 'source/cached.dart';
-import 'source/git.dart';
-import 'source/hosted.dart';
-import 'source/path.dart';
import 'system_cache.dart';
import 'utils.dart';
@@ -80,8 +77,7 @@ class GlobalPackages {
/// Otherwise, the previous ones will be preserved.
Future activateGit(String repo, List<String> executables,
{bool overwriteBinStubs}) async {
- var source = cache.sources["git"] as GitSource;
- var name = await source.getPackageNameFromRepo(repo);
+ var name = await cache.git.getPackageNameFromRepo(repo);
// Call this just to log what the current active package is, if any.
_describeActive(name);
@@ -90,7 +86,8 @@ class GlobalPackages {
// be a mechanism for redoing dependency resolution if a path pubspec has
// changed (see also issue 20499).
await _installInCache(
- GitSource.refFor(name, repo).withConstraint(VersionConstraint.any),
+ cache.git.source.refFor(name, repo)
+ .withConstraint(VersionConstraint.any),
executables, overwriteBinStubs: overwriteBinStubs);
}
@@ -107,8 +104,10 @@ class GlobalPackages {
Future activateHosted(String name, VersionConstraint constraint,
List<String> executables, {bool overwriteBinStubs}) async {
_describeActive(name);
- await _installInCache(HostedSource.refFor(name).withConstraint(constraint),
- executables, overwriteBinStubs: overwriteBinStubs);
+ await _installInCache(
+ cache.hosted.source.refFor(name).withConstraint(constraint),
+ executables,
+ overwriteBinStubs: overwriteBinStubs);
}
/// Makes the local package at [path] globally active.
@@ -133,7 +132,7 @@ class GlobalPackages {
// Write a lockfile that points to the local package.
var fullPath = canonicalize(entrypoint.root.dir);
- var id = PathSource.idFor(name, entrypoint.root.version, fullPath);
+ var id = cache.path.source.idFor(name, entrypoint.root.version, fullPath);
// TODO(rnystrom): Look in "bin" and display list of binaries that
// user can run.
@@ -154,7 +153,7 @@ class GlobalPackages {
dependencies: [dep], sources: cache.sources));
// Resolve it and download its dependencies.
- var result = await resolveVersions(SolveType.GET, cache.sources, root);
+ var result = await resolveVersions(SolveType.GET, cache, root);
if (!result.succeeded) {
// If the package specified by the user doesn't exist, we want to
// surface that as a [DataError] with the associated exit code.
@@ -175,7 +174,7 @@ class GlobalPackages {
var lockFile = result.lockFile;
_writeLockFile(dep.name, lockFile);
- writeTextFile(_getPackagesFilePath(dep.name), lockFile.packagesFile());
+ writeTextFile(_getPackagesFilePath(dep.name), lockFile.packagesFile(cache));
_updateBinStubs(entrypoint.packageGraph.packages[dep.name], executables,
overwriteBinStubs: overwriteBinStubs, snapshots: snapshots);
@@ -208,7 +207,7 @@ class GlobalPackages {
Future _cacheDependency(PackageId id) async {
if (id.isRoot) return;
- var source = cache.sources[id.source];
+ var source = cache.source(id.source);
if (source is! CachedSource) return;
await source.downloadToSystemCache(id);
@@ -237,11 +236,11 @@ class GlobalPackages {
var id = lockFile.packages[name];
if (id.source == 'git') {
- var url = GitSource.urlFromDescription(id.description);
+ var url = cache.git.source.urlFromDescription(id.description);
log.message('Package ${log.bold(name)} is currently active from Git '
'repository "${url}".');
} else if (id.source == 'path') {
- var path = PathSource.pathFromDescription(id.description);
+ var path = cache.path.source.pathFromDescription(id.description);
log.message('Package ${log.bold(name)} is currently active at path '
'"$path".');
} else {
@@ -303,19 +302,19 @@ class GlobalPackages {
var id = lockFile.packages[name];
lockFile = lockFile.removePackage(name);
- var source = cache.sources[id.source];
+ var source = cache.source(id.source);
var entrypoint;
if (source is CachedSource) {
// For cached sources, the package itself is in the cache and the
// lockfile is the one we just loaded.
entrypoint = new Entrypoint.inMemory(
- cache.sources.load(id), lockFile, cache, isGlobal: true);
+ cache.load(id), lockFile, cache, isGlobal: true);
} else {
// For uncached sources (i.e. path), the ID just points to the real
// directory for the package.
assert(id.source == "path");
entrypoint = new Entrypoint(
- PathSource.pathFromDescription(id.description), cache,
+ cache.path.source.pathFromDescription(id.description), cache,
isGlobal: true);
}
@@ -408,10 +407,10 @@ class GlobalPackages {
/// Returns formatted string representing the package [id].
String _formatPackage(PackageId id) {
if (id.source == 'git') {
- var url = GitSource.urlFromDescription(id.description);
+ var url = cache.sources.git.urlFromDescription(id.description);
return '${log.bold(id.name)} ${id.version} from Git repository "$url"';
} else if (id.source == 'path') {
- var path = PathSource.pathFromDescription(id.description);
+ var path = cache.sources.path.pathFromDescription(id.description);
return '${log.bold(id.name)} ${id.version} at path "$path"';
} else {
return '${log.bold(id.name)} ${id.version}';
« no previous file with comments | « lib/src/entrypoint.dart ('k') | lib/src/lock_file.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698