build method
Generates the outputs for a given BuildStep.
Implementation
@override
Future<void> build(BuildStep buildStep) async {
final schema = await buildStep.readAsString(buildStep.inputId);
final temporaryRoot = Directory.systemTemp.createTempSync(
'tdlib_api_builder_',
);
try {
final generator = Generator(
root: temporaryRoot.path,
classes: Parser.fromSource(schema).parse(),
);
generator.generate();
final generatedPaths = generator.outputPaths;
if (!_samePaths(outputPaths, generatedPaths)) {
throw StateError(
'TDLib schema outputs changed while the builder was running. '
'Restart build_runner so it can declare the new output set.',
);
}
for (final path in outputPaths) {
final generated = File('${temporaryRoot.path}/$path');
await buildStep.writeAsString(
AssetId(buildStep.inputId.package, path),
generated.readAsStringSync(),
);
}
} finally {
temporaryRoot.deleteSync(recursive: true);
}
}