Index: utils/pub/path_source.dart |
diff --git a/utils/pub/path_source.dart b/utils/pub/path_source.dart |
index 123a3086c2ed0b3a8c5d546e6a12521cf3e897d2..3c62c5c9db6436a70d331ae741f08c2c46762e1c 100644 |
--- a/utils/pub/path_source.dart |
+++ b/utils/pub/path_source.dart |
@@ -29,21 +29,33 @@ class PathSource extends Source { |
}); |
} |
- Future<bool> install(PackageId id, String path) { |
+ Future<bool> install(PackageId id, String destination) { |
return defer(() { |
try { |
_validatePath(id.name, id.description); |
} on FormatException catch(err) { |
return false; |
} |
- return createPackageSymlink(id.name, id.description, path); |
+ |
+ return createPackageSymlink(id.name, destination, id.description, |
+ relative: true); |
nweiz
2013/02/15 23:09:24
This should be relative iff the path the user spec
Bob Nystrom
2013/02/16 00:09:57
Done.
|
}).then((_) => true); |
} |
- void validateDescription(description, {bool fromLockFile: false}) { |
+ dynamic parseDescription(String containingPath, description, |
+ {bool fromLockFile: false}) { |
if (description is! String) { |
throw new FormatException("The description must be a path string."); |
} |
+ |
+ if (path.isRelative(description)) { |
+ // Can't handle relative paths coming from pubspecs that are not on the |
+ // local file system. |
nweiz
2013/02/15 23:09:24
Can this ever happen in practice? If so, we should
Bob Nystrom
2013/02/16 00:09:57
If a hosted package had a path dependency (which i
nweiz
2013/02/16 01:02:14
What if a remote git dependency has a path depende
Bob Nystrom
2013/02/16 01:19:03
I believe that will get installed locally, and the
nweiz
2013/02/16 01:33:11
That sounds like something else we should throw a
|
+ assert(containingPath != null); |
+ description = path.join(path.dirname(containingPath), description); |
+ } |
+ |
+ return description; |
} |
/// Ensures that [dir] is a valid path. It must be an absolute path that |