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 Set<_IconResult> icons = {};
  await for (final input in buildStep.findAssets(_allDartFiles)) {
    final node = await buildStep.resolver.compilationUnitFor(input);
    final visitor = _Visitor();
    node.accept(visitor);
    icons.addAll(visitor.access);
  }
  for (final style in styles) {
    final formatter = DartFormatter();
    final emitter = DartEmitter(useNullSafetySyntax: true);
    final library = printLibrary(
      style,
      icons.where((element) => element.style == style),
    );
    final contents = formatter.format("${library.accept(emitter)}");
    buildStep.writeAsString(
      AssetId(
        buildStep.inputId.package,
        p.join('lib', 'font_awesome', '${style}.dart'),
      ),
      contents,
    );
  }
}