findPackageConfigPath function

Future<String?> findPackageConfigPath(
  1. Directory directory
)

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