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