Future readAnyConfigFileUri()

in lib/src/package_config_io.dart [65:106]


Future<PackageConfig> readAnyConfigFileUri(
    Uri file,
    Future<Uint8List?> Function(Uri uri)? loader,
    void Function(Object error) onError,
    bool preferNewest) async {
  if (file.isScheme('package')) {
    throw PackageConfigArgumentError(
        file, 'file', 'Must not be a package: URI');
  }
  if (loader == null) {
    if (file.isScheme('file')) {
      return await readAnyConfigFile(File.fromUri(file), preferNewest, onError);
    }
    loader = defaultLoader;
  }
  if (preferNewest && file.pathSegments.last == packagesFileName) {
    var alternateFile = file.resolve('$dartToolDirName/$packageConfigFileName');
    Uint8List? bytes;
    try {
      bytes = await loader(alternateFile);
    } catch (e) {
      onError(e);
      return const SimplePackageConfig.empty();
    }
    if (bytes != null) {
      return parsePackageConfigBytes(bytes, alternateFile, onError);
    }
  }
  Uint8List? bytes;
  try {
    bytes = await loader(file);
  } catch (e) {
    onError(e);
    return const SimplePackageConfig.empty();
  }
  if (bytes == null) {
    onError(PackageConfigArgumentError(
        file.toString(), 'file', 'File cannot be read'));
    return const SimplePackageConfig.empty();
  }
  return parseAnyConfigFile(bytes, file, onError);
}