read static method

PackageConfig? read(
  1. String projectRoot
)

The project's config, or null when pub has not run. For a member of a pub workspace (resolution: workspace) it is the workspace's.

Implementation

static PackageConfig? read(String projectRoot) {
  final file = _resolvedFile(projectRoot, 'package_config.json');
  if (file == null) return null;
  final json = _readJson(file);
  if (json is! Map) return null;
  final base = file.parent.absolute.uri;
  final packages = <String, ResolvedPackage>{};
  for (final p in _list(json['packages'])) {
    if (p is! Map) continue;
    final name = p['name'];
    final rootUri = p['rootUri'];
    if (name is! String || rootUri is! String) continue;
    final root = base.resolve(rootUri.endsWith('/') ? rootUri : '$rootUri/');
    final packageUri = p['packageUri'];
    final lib = root.resolve(packageUri is String ? packageUri : 'lib/');
    packages[name] = ResolvedPackage(name, _path(root), _path(lib));
  }
  final flutterRoot = json['flutterRoot'];
  return PackageConfig._(
    _path(base.resolve('../')),
    packages,
    flutterRoot is String ? _path(Uri.parse(flutterRoot)) : null,
    json['flutterVersion'] is String
        ? json['flutterVersion'] as String
        : null,
  );
}