@@ -193,13 +193,6 @@ class Package implements Comparable<Package> {
193193 var devdeps = devDependencies;
194194 devdeps.remove (packageName);
195195
196- // if (deps.isNotEmpty) {
197- // print(' deps : ${deps}');
198- // }
199- // if (devdeps.isNotEmpty) {
200- // print(' dev deps: ${devdeps}');
201- // }
202-
203196 void out (String message) {
204197 logger.stdout (logger.ansi.emphasized (message));
205198 }
@@ -467,23 +460,36 @@ class SdkDeps {
467460
468461 void _findPackages (Directory dir) {
469462 var pubspec = File (path.join (dir.path, 'pubspec.yaml' ));
463+
470464 if (pubspec.existsSync ()) {
471465 var doc = yaml.loadYamlDocument (pubspec.readAsStringSync ());
466+ if (doc.contents is ! yaml.YamlMap ) {
467+ // Stop recursing.
468+ return ;
469+ }
470+
472471 var contents = doc.contents as yaml.YamlMap ;
473- var name = contents['name' ];
474- var version = contents['version' ];
475- var dep = ResolvedDep (
476- packageName: name,
477- relativePath: path.relative (dir.path),
478- version: version == null ? null : Version .parse (version),
479- );
480- _resolvedPackageVersions[name] = dep;
481- } else {
482- // Continue to recurse.
483- for (var subDir in dir.listSync ().whereType <Directory >()) {
484- _findPackages (subDir);
472+ final isWorkspace = contents.containsKey ('workspace' );
473+
474+ if (! isWorkspace) {
475+ var name = contents['name' ];
476+ var version = contents['version' ];
477+ var dep = ResolvedDep (
478+ packageName: name,
479+ relativePath: path.relative (dir.path),
480+ version: version == null ? null : Version .parse (version),
481+ );
482+ _resolvedPackageVersions[name] = dep;
483+
484+ // We've found a leaf package - stop recursing.
485+ return ;
485486 }
486487 }
488+
489+ // Continue to recurse.
490+ for (var subDir in dir.listSync ().whereType <Directory >()) {
491+ _findPackages (subDir);
492+ }
487493 }
488494}
489495
0 commit comments