build method
Generates the outputs for a given BuildStep
.
Implementation
@override
FutureOr<void> build(BuildStep buildStep) async {
try {
final inputId = buildStep.inputId;
final outputId = inputId.changeExtension(".dart");
final source = await buildStep.readAsString(inputId);
if (!inputId.pathSegments.last.endsWith(".openapi.yaml")) {
return;
}
final inputIdBasename =
inputId.pathSegments.last.replaceAll(".openapi.yaml", "");
final api = _additionalComponentSchemas(
_loadApiFromYaml(source),
);
final baseName = api.info!.extensions["x-dart-name"] as String? ??
inputIdBasename.toPascalCase();
final freezedPartFileName = AssetId(outputId.package, outputId.path)
.changeExtension(".freezed.dart")
.pathSegments
.last;
final partFileName = AssetId(outputId.package, outputId.path)
.changeExtension(".g.dart")
.pathSegments
.last;
final library = await OpenAPIGenerator(
api,
baseName,
partFileName,
freezedPartFileName,
).generate();
final libraryOutput = _formatLibrary(
library,
);
await buildStep.writeAsString(outputId, libraryOutput);
} catch (e, stackTrace) {
print(e.toString());
print(stackTrace.toString());
}
}