[coverage] Switch from package:pubspec_parse to package:yaml (#2103)
diff --git a/pkgs/coverage/CHANGELOG.md b/pkgs/coverage/CHANGELOG.md index 2a680ad..98f8852 100644 --- a/pkgs/coverage/CHANGELOG.md +++ b/pkgs/coverage/CHANGELOG.md
@@ -1,3 +1,7 @@ +## 1.14.1-wip + +- Remove dependency on `package:pubspec_parse`. + ## 1.14.0 - Require Dart ^3.6.0
diff --git a/pkgs/coverage/lib/src/util.dart b/pkgs/coverage/lib/src/util.dart index 74a1697..8ae1a4b 100644 --- a/pkgs/coverage/lib/src/util.dart +++ b/pkgs/coverage/lib/src/util.dart
@@ -7,8 +7,8 @@ import 'dart:io'; import 'package:path/path.dart' as path; -import 'package:pubspec_parse/pubspec_parse.dart'; import 'package:vm_service/vm_service.dart'; +import 'package:yaml/yaml.dart'; // TODO(cbracken) make generic /// Retries the specified function with the specified interval and returns @@ -174,12 +174,16 @@ _getAllWorkspaceNames(packageRoot, <String>[]); List<String> _getAllWorkspaceNames(String packageRoot, List<String> results) { - final pubspecPath = getPubspecPath(packageRoot); - final yaml = File(pubspecPath).readAsStringSync(); - final pubspec = Pubspec.parse(yaml, sourceUrl: Uri.file(pubspecPath)); - results.add(pubspec.name); - for (final workspace in pubspec.workspace ?? <String>[]) { - _getAllWorkspaceNames(path.join(packageRoot, workspace), results); + final pubspec = _loadPubspec(packageRoot); + results.add(pubspec['name'] as String); + for (final workspace in pubspec['workspace'] as YamlList? ?? []) { + _getAllWorkspaceNames(path.join(packageRoot, workspace as String), results); } return results; } + +YamlMap _loadPubspec(String packageRoot) { + final pubspecPath = getPubspecPath(packageRoot); + final yaml = File(pubspecPath).readAsStringSync(); + return loadYaml(yaml, sourceUrl: Uri.file(pubspecPath)) as YamlMap; +}
diff --git a/pkgs/coverage/pubspec.yaml b/pkgs/coverage/pubspec.yaml index e4a229e..3228ab3 100644 --- a/pkgs/coverage/pubspec.yaml +++ b/pkgs/coverage/pubspec.yaml
@@ -1,5 +1,5 @@ name: coverage -version: 1.14.0 +version: 1.14.1-wip description: Coverage data manipulation and formatting repository: https://github.com/dart-lang/tools/tree/main/pkgs/coverage issue_tracker: https://github.com/dart-lang/tools/issues?q=is%3Aissue+is%3Aopen+label%3Apackage%3Acoverage @@ -15,10 +15,10 @@ meta: ^1.0.2 package_config: ^2.0.0 path: ^1.8.0 - pubspec_parse: ^1.5.0 source_maps: ^0.10.10 stack_trace: ^1.10.0 vm_service: '>=12.0.0 <16.0.0' + yaml: ^3.1.3 dev_dependencies: benchmark_harness: ^2.2.0