build method

  1. @override
Future<void> build (
  1. 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);
  }
}