build method

  1. @override
Future<void> build(
  1. BuildStep buildStep
)

Generates the outputs for a given BuildStep.

Implementation

@override
Future<void> build(BuildStep buildStep) async {
  final specDefinitions = await loadSpecDefinitions(buildStep);

  for (final specDefinition in specDefinitions) {
    final outputSpecId = specDefinition.outputSpecFileId;
    final outputAttributeId = specDefinition.outputAttributeFileId;

    final specLibrary = Library(
      (b) => b
        ..body.addAll([
          ClassSpecBuilder(specDefinition),
          ClassSpecTweenBuilder(specDefinition),
        ])
        ..directives
            .add(Directive.import(outputAttributeId.pathSegments.last)),
    );

    final attributeLibrary = Library(
      (b) => b
        ..body.addAll([ClassSpecAttributeBuilder(specDefinition)])
        ..directives.add(Directive.import(outputSpecId.pathSegments.last)),
    );

    await buildStep.writeAsString(
      outputSpecId,
      _dartFormatter.format('${specLibrary.accept(_emitter)}'),
    );
    await buildStep.writeAsString(specDefinition.outputUtilFileId, '');
    await buildStep.writeAsString(
      outputAttributeId,
      _dartFormatter.format('${attributeLibrary.accept(_emitter)}'),
    );
  }
}