getPackageConfig function
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;
}