read static method
Reads the package in directory, or returns null when it has no
readable pubspec.yaml.
Implementation
static WorkspacePackage? read(String directory, {required String root}) {
final pubspec = File(p.join(directory, 'pubspec.yaml'));
if (!pubspec.existsSync()) {
return null;
}
final Object? yaml;
try {
yaml = loadYaml(pubspec.readAsStringSync(), sourceUrl: pubspec.uri);
} on YamlException {
return null;
}
if (yaml is! YamlMap) {
return null;
}
Set<String> keysOf(Object? section) =>
section is YamlMap ? {...section.keys.cast<String>()} : const {};
final name = yaml['name'];
final publishTo = yaml['publish_to'];
return WorkspacePackage(
name: name is String ? name : p.basename(directory),
path: directory,
relativePath: toPosixPath(p.relative(directory, from: root)),
version: yaml['version']?.toString(),
publishTo: publishTo is String ? publishTo : null,
dependencies: keysOf(yaml['dependencies']),
devDependencies: keysOf(yaml['dev_dependencies']),
isWorkspaceMember: yaml['resolution'] == 'workspace',
);
}