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

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

Issue 1165473002: Start pulling pub from its own repo. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Code review changes Created 5 years, 7 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: sdk/lib/_internal/pub/lib/src/source.dart
diff --git a/sdk/lib/_internal/pub/lib/src/source.dart b/sdk/lib/_internal/pub/lib/src/source.dart
deleted file mode 100644
index 85218d349791722d4552b8c3c3eafa9298dd3338..0000000000000000000000000000000000000000
--- a/sdk/lib/_internal/pub/lib/src/source.dart
+++ /dev/null
@@ -1,187 +0,0 @@
-// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-library pub.source;
-
-import 'dart:async';
-
-import 'package:pub_semver/pub_semver.dart';
-
-import 'package.dart';
-import 'pubspec.dart';
-import 'system_cache.dart';
-
-/// A source from which to get packages.
-///
-/// Each source has many packages that it looks up using [PackageId]s. Sources
-/// that inherit this directly (currently just [PathSource]) are *uncached*
-/// sources. They deliver a package directly to the package that depends on it.
-///
-/// Other sources are *cached* sources. These extend [CachedSource]. When a
-/// package needs a dependency from a cached source, it is first installed in
-/// the [SystemCache] and then acquired from there.
-abstract class Source {
- /// The name of the source.
- ///
- /// Should be lower-case, suitable for use in a filename, and unique accross
- /// all sources.
- String get name;
-
- /// Whether this source can choose between multiple versions of the same
- /// package during version solving.
- ///
- /// Defaults to `false`.
- final bool hasMultipleVersions = false;
-
- /// Whether or not this source is the default source.
- bool get isDefault => systemCache.sources.defaultSource == this;
-
- /// The system cache with which this source is registered.
- SystemCache get systemCache {
- assert(_systemCache != null);
- return _systemCache;
- }
-
- /// The system cache variable.
- ///
- /// Set by [_bind].
- SystemCache _systemCache;
-
- /// Records the system cache to which this source belongs.
- ///
- /// This should only be called once for each source, by
- /// [SystemCache.register]. It should not be overridden by base classes.
- void bind(SystemCache systemCache) {
- assert(_systemCache == null);
- this._systemCache = systemCache;
- }
-
- /// Get the pubspecs of all versions that exist for the package described by
- /// [description].
- ///
- /// [name] is the expected name of the package.
- ///
- /// Note that this does *not* require the packages to be downloaded locally,
- /// which is the point. This is used during version resolution to determine
- /// which package versions are available to be downloaded (or already
- /// downloaded).
- ///
- /// By default, this assumes that each description has a single version and
- /// uses [describe] to get that version.
- Future<List<Pubspec>> getVersions(String name, description) async {
- var id = new PackageId(name, this.name, Version.none, description);
- return [await describe(id)];
- }
-
- /// Loads the (possibly remote) pubspec for the package version identified by
- /// [id].
- ///
- /// This may be called for packages that have not yet been downloaded during
- /// the version resolution process.
- ///
- /// Sources should not override this. Instead, they implement [doDescribe].
- Future<Pubspec> describe(PackageId id) {
- if (id.isRoot) throw new ArgumentError("Cannot describe the root package.");
- if (id.source != name) {
- throw new ArgumentError("Package $id does not use source $name.");
- }
-
- // Delegate to the overridden one.
- return doDescribe(id);
- }
-
- /// Loads the (possibly remote) pubspec for the package version identified by
- /// [id].
- ///
- /// This may be called for packages that have not yet been downloaded during
- /// the version resolution process.
- ///
- /// This method is effectively protected: subclasses must implement it, but
- /// external code should not call this. Instead, call [describe].
- Future<Pubspec> doDescribe(PackageId id);
-
- /// Ensures [id] is available locally and creates a symlink at [symlink]
- /// pointing it.
- Future get(PackageId id, String symlink);
-
- /// Returns the directory where this package can (or could) be found locally.
- ///
- /// If the source is cached, this will be a path in the system cache. In that
- /// case, this will return a directory even if the package has not been
- /// installed into the cache yet.
- Future<String> getDirectory(PackageId id);
-
- /// Gives the source a chance to interpret and validate the description for
- /// a package coming from this source.
- ///
- /// When a [Pubspec] or [LockFile] is parsed, it reads in the description for
- /// each dependency. It is up to the dependency's [Source] to determine how
- /// that should be interpreted. This will be called during parsing to validate
- /// that the given [description] is well-formed according to this source, and
- /// to give the source a chance to canonicalize the description.
- ///
- /// [containingPath] is the path to the local file (pubspec or lockfile)
- /// where this description appears. It may be `null` if the description is
- /// coming from some in-memory source (such as pulling down a pubspec from
- /// pub.dartlang.org).
- ///
- /// It should return if a (possibly modified) valid description, or throw a
- /// [FormatException] if not valid.
- ///
- /// [fromLockFile] is true when the description comes from a [LockFile], to
- /// allow the source to use lockfile-specific descriptions via [resolveId].
- dynamic parseDescription(String containingPath, description,
- {bool fromLockFile: false});
-
- /// When a [LockFile] is serialized, it uses this method to get the
- /// [description] in the right format.
- ///
- /// [containingPath] is the containing directory of the root package.
- dynamic serializeDescription(String containingPath, description) {
- return description;
- }
-
- /// When a package [description] is shown to the user, this is called to
- /// convert it into a human-friendly form.
- ///
- /// By default, it just converts the description to a string, but sources
- /// may customize this. [containingPath] is the containing directory of the
- /// root package.
- String formatDescription(String containingPath, description) {
- return description.toString();
- }
-
- /// Returns whether or not [description1] describes the same package as
- /// [description2] for this source.
- ///
- /// This method should be light-weight. It doesn't need to validate that
- /// either package exists.
- bool descriptionsEqual(description1, description2);
-
- /// Resolves [id] to a more possibly more precise that will uniquely identify
- /// a package regardless of when the package is requested.
- ///
- /// For some sources, [PackageId]s can point to different chunks of code at
- /// different times. This takes such an [id] and returns a future that
- /// completes to a [PackageId] that will uniquely specify a single chunk of
- /// code forever.
- ///
- /// For example, [GitSource] might take an [id] with description
- /// `http://github.com/dart-lang/some-lib.git` and return an id with a
- /// description that includes the current commit of the Git repository.
- ///
- /// Pub calls this after getting a package, so the source can use the local
- /// package to determine information about the resolved id.
- ///
- /// The returned [PackageId] may have a description field that's invalid
- /// according to [parseDescription], although it must still be serializable
- /// to JSON and YAML. It must also be equal to [id] according to
- /// [descriptionsEqual].
- ///
- /// By default, this just returns [id].
- Future<PackageId> resolveId(PackageId id) => new Future.value(id);
-
- /// Returns the source's name.
- String toString() => name;
-}
« no previous file with comments | « sdk/lib/_internal/pub/lib/src/solver/version_solver.dart ('k') | sdk/lib/_internal/pub/lib/src/source/cached.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698