build method
Generates the outputs for a given BuildStep
.
Implementation
@override
Future<void> build(bld.BuildStep buildStep) async {
try {
final fileInputId = buildStep.inputId;
final filename = fileInputId.pathSegments.last;
final keysFileInputId = fileInputId.changeExtension('.keys.dart');
final keysFilename = keysFileInputId.pathSegments.last;
final libraryElement = await buildStep.resolver.libraryFor(fileInputId);
const typeChecker = TypeChecker.fromRuntime(GenKeys);
final annotatedElements =
LibraryReader(libraryElement).annotatedWith(typeChecker);
_throwOnPartOrAnnotationWrong(annotatedElements, keysFilename, filename,
libraryElement, fileInputId);
if (annotatedElements.isNotEmpty) {
final keyMetas =
await _keyMetasFromAnnotatedElements(annotatedElements, buildStep);
_throwOnAnnotationButNoKeys(keyMetas, fileInputId);
await _generateKeysFile(filename, keyMetas, buildStep, keysFileInputId);
}
} on bld.NonLibraryAssetException {
// if here, likely hit a file we don't want to process. (e.g., .g.dart file). Do nothing.
}
}