build method
- @override
- BuildStep buildStep
override
Generates the outputs for a given BuildStep.
Implementation
@override
Future<void> build(BuildStep buildStep) async {
final String fileNameWithExtension = buildStep.inputId.pathSegments.last;
final String fileNameWithoutExtension =
fileNameWithExtension.split('.').first;
final String contents = await buildStep.readAsString(buildStep.inputId);
final SwaggerCodeGenerator codeGenerator = SwaggerCodeGenerator();
final String models = codeGenerator.generateModels(
contents, getFileNameWithoutExtension(fileNameWithExtension), options);
final String imports = codeGenerator.generateImportsContent(
contents, fileNameWithoutExtension, models.isNotEmpty);
final String converter = codeGenerator.generateConverter(
contents, getFileNameWithoutExtension(fileNameWithExtension));
final String requests = codeGenerator.generateRequests(
contents,
getClassNameFromFileName(fileNameWithExtension),
getFileNameWithoutExtension(fileNameWithExtension),
options);
final String customDecoder = codeGenerator.generateCustomJsonConverter(
contents, getFileNameWithoutExtension(fileNameWithExtension));
final AssetId copyAssetId = AssetId(buildStep.inputId.package,
'${options.outputFolder}$fileNameWithoutExtension$outputFileExtension');
await buildStep.writeAsString(
copyAssetId,
_generateFileContent(
imports, requests, converter, models, customDecoder));
///Write additional files on first input
if (buildExtensions.keys.first == buildStep.inputId.path) {
await _generateAdditionalFiles(contents, buildStep.inputId, buildStep);
}
}