read static method

WorkspacePackage? read(
  1. String directory, {
  2. required String root,
})

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',
  );
}