build method
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);
}