Index: utils/pub/path_source.dart |
diff --git a/utils/pub/path_source.dart b/utils/pub/path_source.dart |
deleted file mode 100644 |
index c103c1bfdd488a57a8af0efd254145f2a05ca6c7..0000000000000000000000000000000000000000 |
--- a/utils/pub/path_source.dart |
+++ /dev/null |
@@ -1,128 +0,0 @@ |
-// Copyright (c) 2013, 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 path_source; |
- |
-import 'dart:async'; |
-import 'dart:io'; |
- |
-import 'package:pathos/path.dart' as path; |
- |
-import 'log.dart' as log; |
- |
-import 'io.dart'; |
-import 'package.dart'; |
-import 'pubspec.dart'; |
-import 'version.dart'; |
-import 'source.dart'; |
-import 'utils.dart'; |
- |
-// TODO(rnystrom): Support relative paths. (See comment in _validatePath().) |
-/// A package [Source] that installs packages from a given local file path. |
-class PathSource extends Source { |
- final name = 'path'; |
- final shouldCache = false; |
- |
- Future<Pubspec> describe(PackageId id) { |
- return new Future.sync(() { |
- _validatePath(id.name, id.description); |
- return new Pubspec.load(id.name, id.description["path"], |
- systemCache.sources); |
- }); |
- } |
- |
- bool descriptionsEqual(description1, description2) { |
- try { |
- // Compare real paths after normalizing and resolving symlinks. |
- var path1 = new File(description1["path"]).fullPathSync(); |
- var path2 = new File(description2["path"]).fullPathSync(); |
- return path1 == path2; |
- } on FileIOException catch (ex) { |
- // If either of the files couldn't be found, fall back to just comparing |
- // the normalized paths. |
- var path1 = path.normalize(path.absolute(description1["path"])); |
- var path2 = path.normalize(path.absolute(description2["path"])); |
- return path1 == path2; |
- } |
- } |
- |
- Future<bool> install(PackageId id, String destination) { |
- return new Future.sync(() { |
- try { |
- _validatePath(id.name, id.description); |
- } on FormatException catch(err) { |
- return false; |
- } |
- |
- createPackageSymlink(id.name, id.description["path"], destination, |
- relative: id.description["relative"]); |
- return true; |
- }); |
- } |
- |
- /// Parses a path dependency. This takes in a path string and returns a map. |
- /// The "path" key will be the original path but resolved relative to the |
- /// containing path. The "relative" key will be `true` if the original path |
- /// was relative. |
- /// |
- /// A path coming from a pubspec is a simple string. From a lock file, it's |
- /// an expanded {"path": ..., "relative": ...} map. |
- dynamic parseDescription(String containingPath, description, |
- {bool fromLockFile: false}) { |
- if (fromLockFile) { |
- if (description is! Map) { |
- throw new FormatException("The description must be a map."); |
- } |
- |
- if (description["path"] is! String) { |
- throw new FormatException("The 'path' field of the description must " |
- "be a string."); |
- } |
- |
- if (description["relative"] is! bool) { |
- throw new FormatException("The 'relative' field of the description " |
- "must be a boolean."); |
- } |
- |
- return description; |
- } |
- |
- if (description is! String) { |
- throw new FormatException("The description must be a path string."); |
- } |
- |
- // Resolve the path relative to the containing file path, and remember |
- // whether the original path was relative or absolute. |
- bool isRelative = path.isRelative(description); |
- if (path.isRelative(description)) { |
- // Can't handle relative paths coming from pubspecs that are not on the |
- // local file system. |
- assert(containingPath != null); |
- |
- description = path.join(path.dirname(containingPath), description); |
- } |
- |
- return { |
- "path": description, |
- "relative": isRelative |
- }; |
- } |
- |
- /// Ensures that [description] is a valid path description. It must be a map, |
- /// with a "path" key containing a path that points to an existing directory. |
- /// Throws a [FormatException] if the path is invalid. |
- void _validatePath(String name, description) { |
- var dir = description["path"]; |
- |
- if (dirExists(dir)) return; |
- |
- if (fileExists(dir)) { |
- throw new FormatException( |
- "Path dependency for package '$name' must refer to a " |
- "directory, not a file. Was '$dir'."); |
- } |
- |
- throw new FormatException("Could not find package '$name' at '$dir'."); |
- } |
-} |