build method
Generates the outputs for a given BuildStep.
Implementation
@override
Future<void> build(BuildStep buildStep) async {
final package = buildStep.inputId.package;
if (!packagesToIndex.contains(buildStep.inputId.package)) return;
final output = buildStep.allowedOutputs.single;
final publicLibraries = <PublicLibrary>[];
if (package == r'$sdk') {
await for (final library in buildStep.resolver.libraries) {
if (library.name case final name?) {
publicLibraries.add(PublicLibrary(AssetId(package, name), library));
}
}
} else {
final src = Glob('lib/src/**');
await for (final input in buildStep.findAssets(Glob('lib/**.dart'))) {
if (src.matches(input.path)) continue;
final library = await buildStep.resolver.libraryFor(input);
publicLibraries.add(PublicLibrary(input, library));
}
}
await buildStep.writeAsString(output, json.encode(publicLibraries));
}