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 readers = resolvedPaths
      .map((p) => MetadataReader.read(File(p).readAsBytesSync()))
      .toList();
  return MetadataIndex.fromReaders(readers);
}