build method
Generates the outputs for a given BuildStep.
Implementation
@override
Future<void> build(BuildStep buildStep) async {
var inputId = buildStep.inputId;
final outputId = buildStep.allowedOutputs.single;
var contents = await buildStep.readAsString(inputId);
if (!contents.contains("// [element]: EasyDSL")) {
return;
}
log.warning(
"[Easy Combine] build: ${inputId.path}, outputId: ${outputId.path}");
final assetIds = await buildStep.findAssets(Glob("**/*.easy")).toList()
..sort();
final clsSet = <String>{};
await Future.wait(
assetIds.map((e) async {
final content = await buildStep.readAsString(e);
final classNames = _getClassNames(content);
clsSet.addAll(classNames);
}),
);
final items = clsSet.map((e) => ClsItem.fromSrc(e)).toList();
final generator = ClsGenerator(
partOfUri: inputId.changeExtension('.dart').uri.toString(),
items: items,
);
await buildStep.writeAsString(outputId, generator.generate());
}