build method
Generates the outputs for a given BuildStep.
Implementation
@override
Future build(BuildStep buildStep) async {
// Each [buildStep] has a single input.
var inputId = buildStep.inputId;
// Create a new target [AssetId] based on the old one.
var contents = await buildStep.readAsString(inputId);
contents = contents.replaceAll('\n', '');
final attrs = List<TailwindAttr>.empty(growable: true);
for (final a in allTailwindAttrs.entries) {
if (contents.contains(a.key)) {
attrs.add(a.value);
for (final b in getModifiedTailwindAttr(contents, a.value, a.key)) {
attrs.add(b);
}
}
}
// If there is no tailwind attribute, don't write anything.
if (attrs.isEmpty) {
return;
}
final outputId = AssetId(
inputId.package,
inputId.path
.replaceFirst('lib/', 'lib/tailwind/')
.replaceFirst('.dart', '.tailwind.dart'),
);
// Write out the new asset.
await buildStep.writeAsString(
outputId, '// ${attrs.map((a) => a.value).join('\n// ')}');
}