| Index: utils/pub/package.dart
|
| diff --git a/utils/pub/package.dart b/utils/pub/package.dart
|
| index 0b1bcfa2d36dc32c3e19cc34e396f4a8df3ffec1..8a672f82ab0cb56bb91e295f66907d1736ff22c8 100644
|
| --- a/utils/pub/package.dart
|
| +++ b/utils/pub/package.dart
|
| @@ -113,13 +113,28 @@ class Package implements Hashable {
|
| });
|
|
|
| readFuture.then((pubspec) {
|
| - // TODO(rnystrom): Use YAML parser when ready. For now, it's just a flat
|
| - // list of newline-separated strings.
|
| - final dependencyNames = pubspec.split('\n').
|
| - map((name) => name.trim()).
|
| - filter((name) => (name != null) && (name != ''));
|
| -
|
| - completer.complete(dependencyNames);
|
| + if (pubspec.trim() == '') {
|
| + completer.complete(<String>[]);
|
| + return;
|
| + }
|
| +
|
| + var parsedPubspec = loadYaml(pubspec);
|
| + if (parsedPubspec is! Map) {
|
| + completer.completeException('The pubspec must be a YAML mapping.');
|
| + }
|
| +
|
| + if (!parsedPubspec.containsKey('dependencies')) {
|
| + completer.complete(<String>[]);
|
| + return;
|
| + }
|
| +
|
| + var dependencies = parsedPubspec['dependencies'];
|
| + if (dependencies.some((e) => e is! String)) {
|
| + completer.completeException(
|
| + 'The pubspec dependencies must be a list of package names.');
|
| + }
|
| +
|
| + completer.complete(dependencies);
|
| });
|
|
|
| return completer.future;
|
|
|