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

Unified Diff: sdk/lib/_internal/pub/lib/src/source/git.dart

Issue 243683002: Refactor Source. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Revise all the things. Created 6 years, 8 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 | « sdk/lib/_internal/pub/lib/src/source/cached.dart ('k') | sdk/lib/_internal/pub/lib/src/source/hosted.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: sdk/lib/_internal/pub/lib/src/source/git.dart
diff --git a/sdk/lib/_internal/pub/lib/src/source/git.dart b/sdk/lib/_internal/pub/lib/src/source/git.dart
index 563ea572b02778c2e83bd59d666622139a4ff980..c7329b29b785fd95adaeb731de26b92546197cef 100644
--- a/sdk/lib/_internal/pub/lib/src/source/git.dart
+++ b/sdk/lib/_internal/pub/lib/src/source/git.dart
@@ -12,14 +12,13 @@ import '../git.dart' as git;
import '../io.dart';
import '../log.dart' as log;
import '../package.dart';
-import '../source.dart';
+import '../pubspec.dart';
import '../utils.dart';
+import 'cached.dart';
/// A package source that gets packages from Git repos.
-class GitSource extends Source {
- final String name = "git";
-
- final bool shouldCache = true;
+class GitSource extends CachedSource {
+ final name = "git";
/// The paths to the canonical clones of repositories for which "git fetch"
/// has already been run during this run of pub.
@@ -27,6 +26,12 @@ class GitSource extends Source {
GitSource();
+ /// Since we don't have an easy way to read from a remote Git repo, this
+ /// just installs [id] into the system cache, then describes it from there.
+ Future<Pubspec> describeUncached(PackageId id) {
+ return downloadToSystemCache(id).then((package) => package.pubspec);
+ }
+
/// Clones a Git repo to the local filesystem.
///
/// The Git cache directory is a little idiosyncratic. At the top level, it
@@ -55,7 +60,7 @@ class GitSource extends Source {
ensureDir(path.join(systemCacheRoot, 'cache'));
return _ensureRevision(id);
- }).then((_) => systemCacheDirectory(id)).then((path) {
+ }).then((_) => getDirectory(id)).then((path) {
revisionCachePath = path;
if (entryExists(revisionCachePath)) return null;
return _clone(_repoCachePath(id), revisionCachePath, mirror: false);
@@ -69,7 +74,7 @@ class GitSource extends Source {
}
/// Returns the path to the revision-specific cache of [id].
- Future<String> systemCacheDirectory(PackageId id) {
+ Future<String> getDirectory(PackageId id) {
return _ensureRevision(id).then((rev) {
var revisionCacheName = '${id.name}-$rev';
return path.join(systemCacheRoot, revisionCacheName);
@@ -123,6 +128,12 @@ class GitSource extends Source {
});
}
+ List<Package> getCachedPackages() {
+ // TODO(keertip): Implement getCachedPackages().
+ throw new UnimplementedError(
+ "The git source doesn't support listing its cached packages yet.");
+ }
+
/// Resets all cached packages back to the pristine state of the Git
/// repository at the revision they are pinned to.
Future<Pair<int, int>> repairCachedPackages() {
@@ -162,8 +173,6 @@ class GitSource extends Source {
})).then((_) => new Pair(successes, failures));
}
- // TODO(keertip): Implement getCachedPackages().
-
/// Ensure that the canonical clone of the repository referred to by [id] (the
/// one in `<system cache>/git/cache`) exists and contains the revision
/// referred to by [id].
« no previous file with comments | « sdk/lib/_internal/pub/lib/src/source/cached.dart ('k') | sdk/lib/_internal/pub/lib/src/source/hosted.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698