findPackageConfigPath function
Finds the nearest .dart_tool/package_config.json by walking up from the
project root of directory.
Implementation
Future<String?> findPackageConfigPath(Directory directory) async {
final root = await _findProjectRoot(directory);
if (root == null) {
return null;
}
var searchDirectory = io.Directory(root.path);
if (!searchDirectory.isAbsolute) {
searchDirectory = searchDirectory.absolute;
}
if (!searchDirectory.existsSync()) {
return null;
}
while (true) {
final configFile = io.File(
p.join(searchDirectory.path, '.dart_tool', 'package_config.json'),
);
if (configFile.existsSync()) {
return configFile.path;
}
final parent = searchDirectory.parent;
if (parent.path == searchDirectory.path) {
break;
}
searchDirectory = parent;
}
return null;
}