build method

  1. @override
Future<void> build(
  1. BuildStep buildStep
)

Generates the outputs for a given BuildStep.

Implementation

@override
Future<void> build(BuildStep buildStep) async {
  var map = {
    "ID": "String",
    "String": "String",
    "Float": "double",
    "Int": "int",
    "Boolean": "bool",
    "Null": "null"
  };
  options.config.entries
      .where((element) => element.value is String)
      .forEach((e) {
    map[e.key] = e.value as String;
  });

  var g = GQGrammar(
      typeMap: map,
      generateAllFieldsFragments:
          options.config["generateAllFieldsFragments"] ?? false);

  var parser = g.buildFrom(g.start());

  var schema = await readSchema(buildStep);
  parser.parse(schema);

  final inputs = g.generateInputs();
  final enums = g.generateEnums();
  final types = g.generateTypes();
  final client = g.generateClient();

  var dir = Directory(outputDir);
  var exists = await dir.exists();
  if (!exists) {
    await dir.create(recursive: true);
  }

  await File('$outputDir/$inputsFileName.dart').writeAsString(inputs);
  await File('$outputDir/$enumsFileName.dart').writeAsString(enums);
  await File('$outputDir/$typesFileName.dart').writeAsString(types);
  await File('$outputDir/$clientFileName.dart').writeAsString(client);
}