loadMultipleMetadata method

Future<MetadataIndex> loadMultipleMetadata({
  1. required List<WindowsMetadataPackage> packages,
  2. WindowsMetadataVersions? versions,
})

Loads multiple Windows Metadata packages into a MetadataIndex.

Example:

final metadataLoader = WindowsMetadataLoader();
final index = await metadataLoader.loadMultipleMetadata(
  packages: [WindowsMetadataPackage.wdk, WindowsMetadataPackage.win32],
  versions: WindowsMetadataVersions(wdk: '0.13.25-experimental'),
);

Implementation

Future<MetadataIndex> loadMultipleMetadata({
  required List<WindowsMetadataPackage> packages,
  WindowsMetadataVersions? versions,
}) async {
  if (packages.isEmpty) {
    throw ArgumentError.value(
      packages,
      'packages',
      'Must contain at least one metadata package.',
    );
  }

  final resolvedPaths = await Future.wait(
    packages.map((package) {
      final version = versions?._resolve(package);
      return _resolveMetadataPath(package, version);
    }),
  );
  final bytesList = await Future.wait(
    resolvedPaths.map((path) => File(path).readAsBytes()),
  );
  final readers = bytesList.map(MetadataReader.read).toList();
  return .fromReaders(readers);
}