Index: utils/pub/package.dart |
diff --git a/utils/pub/package.dart b/utils/pub/package.dart |
deleted file mode 100644 |
index ce1ad35d7a370699e156466a02c7f3e1cb5fc538..0000000000000000000000000000000000000000 |
--- a/utils/pub/package.dart |
+++ /dev/null |
@@ -1,238 +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 package; |
- |
-import 'dart:async'; |
- |
-import 'package:pathos/path.dart' as path; |
- |
-import 'io.dart'; |
-import 'pubspec.dart'; |
-import 'source.dart'; |
-import 'source_registry.dart'; |
-import 'version.dart'; |
- |
-final _README_REGEXP = new RegExp(r"^README($|\.)", caseSensitive: false); |
- |
-/// A named, versioned, unit of code and resource reuse. |
-class Package { |
- /// The path to the directory containing the package. |
- final String dir; |
- |
- /// The name of the package. |
- String get name { |
- if (pubspec.name != null) return pubspec.name; |
- if (dir != null) return path.basename(dir); |
- return null; |
- } |
- |
- /// The package's version. |
- Version get version => pubspec.version; |
- |
- /// The parsed pubspec associated with this package. |
- final Pubspec pubspec; |
- |
- /// The ids of the packages that this package depends on. This is what is |
- /// specified in the pubspec when this package depends on another. |
- List<PackageRef> get dependencies => pubspec.dependencies; |
- |
- /// Returns the path to the README file at the root of the entrypoint, or null |
- /// if no README file is found. If multiple READMEs are found, this uses the |
- /// same conventions as pub.dartlang.org for choosing the primary one: the |
- /// README with the fewest extensions that is lexically ordered first is |
- /// chosen. |
- String get readmePath { |
- var readmes = listDir(dir).map(path.basename). |
- where((entry) => entry.contains(_README_REGEXP)); |
- if (readmes.isEmpty) return null; |
- |
- return path.join(dir, readmes.reduce((readme1, readme2) { |
- var extensions1 = ".".allMatches(readme1).length; |
- var extensions2 = ".".allMatches(readme2).length; |
- var comparison = extensions1.compareTo(extensions2); |
- if (comparison == 0) comparison = readme1.compareTo(readme2); |
- return (comparison <= 0) ? readme1 : readme2; |
- })); |
- } |
- |
- /// Loads the package whose root directory is [packageDir]. [name] is the |
- /// expected name of that package (e.g. the name given in the dependency), or |
- /// `null` if the package being loaded is the entrypoint package. |
- Package.load(String name, String packageDir, SourceRegistry sources) |
- : dir = packageDir, |
- pubspec = new Pubspec.load(name, packageDir, sources); |
- |
- /// Constructs a package with the given pubspec. The package will have no |
- /// directory associated with it. |
- Package.inMemory(this.pubspec) |
- : dir = null; |
- |
- /// Constructs a package. This should not be called directly. Instead, acquire |
- /// packages from [load()]. |
- Package._(this.dir, this.pubspec); |
- |
- /// Returns a debug string for the package. |
- String toString() => '$name $version ($dir)'; |
-} |
- |
-/// An unambiguous resolved reference to a package. A package ID contains enough |
-/// information to correctly install the package. |
-/// |
-/// Note that it's possible for multiple distinct package IDs to point to |
-/// different directories that happen to contain identical packages. For |
-/// example, the same package may be available from multiple sources. As far as |
-/// Pub is concerned, those packages are different. |
-class PackageId implements Comparable<PackageId> { |
- /// The name of the package being identified. |
- final String name; |
- |
- /// The [Source] used to look up this package given its [description]. If |
- /// this is a root package ID, this will be `null`. |
- final Source source; |
- |
- /// The package's version. |
- final Version version; |
- |
- /// The metadata used by the package's [source] to identify and locate it. It |
- /// contains whatever [Source]-specific data it needs to be able to install |
- /// the package. For example, the description of a git sourced package might |
- /// by the URL "git://github.com/dart/uilib.git". |
- final description; |
- |
- PackageId(this.name, this.source, this.version, this.description); |
- |
- /// Creates an ID for the given root package. |
- PackageId.root(Package package) |
- : name = package.name, |
- source = null, |
- version = package.version, |
- description = package.name; |
- |
- /// Whether this ID identifies the root package. |
- bool get isRoot => source == null; |
- |
- int get hashCode => name.hashCode ^ source.hashCode ^ version.hashCode; |
- |
- /// Gets the directory where this package is or would be found in the |
- /// [SystemCache]. |
- Future<String> get systemCacheDirectory => source.systemCacheDirectory(this); |
- |
- bool operator ==(other) { |
- if (other is! PackageId) return false; |
- // TODO(rnystrom): We're assuming here the name/version/source tuple is |
- // enough to uniquely identify the package and that we don't need to delve |
- // into the description. |
- return other.name == name && |
- other.source == source && |
- other.version == version; |
- } |
- |
- String toString() { |
- if (isRoot) return "$name $version (root)"; |
- if (source.isDefault) return "$name $version"; |
- return "$name $version from $source"; |
- } |
- |
- int compareTo(PackageId other) { |
- var sourceComp = source.name.compareTo(other.source.name); |
- if (sourceComp != 0) return sourceComp; |
- |
- var nameComp = name.compareTo(other.name); |
- if (nameComp != 0) return nameComp; |
- |
- return version.compareTo(other.version); |
- } |
- |
- /// Returns the pubspec for this package. |
- Future<Pubspec> describe() => source.systemCache.describe(this); |
- |
- /// Returns a future that completes to the resovled [PackageId] for this id. |
- Future<PackageId> get resolved => source.resolveId(this); |
- |
- /// Returns a [PackageRef] that references this package and constrains its |
- /// version to exactly match [version]. |
- PackageRef toRef() { |
- return new PackageRef(name, source, version, description); |
- } |
- |
- /// Returns `true` if this id's description matches [other]'s. |
- bool descriptionEquals(PackageRef other) { |
- return source.descriptionsEqual(description, other.description); |
- } |
-} |
- |
-/// A reference to a package. Unlike a [PackageId], a PackageRef may not |
-/// unambiguously refer to a single package. It may describe a range of allowed |
-/// packages. |
-class PackageRef { |
- /// The name of the package being identified. |
- final String name; |
- |
- /// The [Source] used to look up the package. If this refers to a root |
- /// package, this will be `null`. |
- final Source source; |
- |
- /// The allowed package versions. |
- final VersionConstraint constraint; |
- |
- /// The metadata used to identify the package being referenced. The |
- /// interpretation of this will vary based on the [source]. |
- final description; |
- |
- PackageRef(this.name, this.source, this.constraint, this.description); |
- |
- // TODO(rnystrom): Remove this if the old version solver is removed. |
- /// Creates a reference to the given root package. |
- PackageRef.root(Package package) |
- : name = package.name, |
- source = null, |
- constraint = package.version, |
- description = package.name; |
- |
- /// Whether this refers to the root package. |
- bool get isRoot => source == null; |
- |
- String toString() { |
- if (isRoot) return "$name $constraint (root)"; |
- return "$name $constraint from $source ($description)"; |
- } |
- |
- /// Returns a [PackageId] generated from this [PackageRef] with the given |
- /// concrete version. |
- PackageId atVersion(Version version) => |
- new PackageId(name, source, version, description); |
- |
- /// Returns `true` if this reference's description matches [other]'s. |
- bool descriptionEquals(PackageRef other) { |
- return source.descriptionsEqual(description, other.description); |
- } |
-} |
- |
-class PubspecNotFoundException implements Exception { |
- final String name; |
- |
- PubspecNotFoundException(this.name); |
- |
- String toString() => 'Package "$name" doesn\'t have a pubspec.yaml file.'; |
-} |
- |
-class PubspecHasNoNameException implements Exception { |
- final String name; |
- |
- PubspecHasNoNameException(this.name); |
- |
- String toString() => 'Package "$name"\'s pubspec.yaml file is missing the ' |
- 'required "name" field (e.g. "name: $name").'; |
-} |
- |
-class PubspecNameMismatchException implements Exception { |
- final String expectedName; |
- final String actualName; |
- |
- PubspecNameMismatchException(this.expectedName, this.actualName); |
- |
- String toString() => 'The name you specified for your dependency, ' |
- '"$expectedName", doesn\'t match the name "$actualName" in its pubspec.'; |
-} |