build method

  1. @override
Future build(
  1. BuildStep buildStep
)

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);
}