build method
Generates the outputs for a given BuildStep
.
Implementation
@override
Future build(BuildStep buildStep) async {
final cleanMetaModules = await buildStep.fetchResource(metaModuleCache);
final metaModule = (await cleanMetaModules.find(
AssetId(buildStep.inputId.package,
'lib/${metaModuleCleanExtension(_platform)}'),
buildStep))!;
var outputModule = metaModule.modules
.firstWhereOrNull((m) => m.primarySource == buildStep.inputId);
if (outputModule == null) {
final serializedLibrary = await buildStep.readAsString(
buildStep.inputId.changeExtension(moduleLibraryExtension));
final libraryModule =
ModuleLibrary.deserialize(buildStep.inputId, serializedLibrary);
if (libraryModule.hasMain) {
outputModule = metaModule.modules
.firstWhere((m) => m.sources.contains(buildStep.inputId));
}
}
if (outputModule == null) return;
final modules = await buildStep.fetchResource(moduleCache);
await modules.write(
buildStep.inputId.changeExtension(moduleExtension(_platform)),
buildStep,
outputModule);
}