getPackageConfig function

Future<List<PackageInfo>> getPackageConfig(
  1. String projectPath
)

Read package_config.json and return all package entries

Implementation

Future<List<PackageInfo>> getPackageConfig(String projectPath) async {
  final configFile = File(p.join(projectPath, '.dart_tool', 'package_config.json'));

  if (!await configFile.exists()) {
    return [];
  }

  final content = await configFile.readAsString();
  final config = jsonDecode(content) as Map<String, dynamic>;
  final packages = config['packages'] as List<dynamic>? ?? [];

  final result = <PackageInfo>[];

  for (final pkg in packages) {
    final pkgMap = pkg as Map<String, dynamic>;
    final name = pkgMap['name'] as String;
    final rootUri = pkgMap['rootUri'] as String;

    // Resolve path relative to .dart_tool directory
    final resolvedPath = _resolvePackagePath(rootUri, projectPath);

    result.add(PackageInfo(name: name, path: resolvedPath));
  }

  return result;
}