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 {
  // final allFiles = await buildStep.findAssets(_allFilesInLib).toList();
  final definitions = await buildStep
      .findAssets(_allFilesInLib)
      .asyncExpand((input) => _extractGraphQL(input, buildStep))
      .toList();
  final schemaDocument = DocumentNode(
    definitions: definitions,
  );
  final schema = Schema(
    BuiltMap.of({buildStep.inputId: schemaDocument}),
    (id) => 'lib/switch.dart',
  );
  final context = ContextRoot<AssetId>(
    schema: schema,
    key: buildStep.inputId,
    config: GraphQLCodegenConfig(),
  );
  schemaDocument.accept(ContextVisitor(context: context));
  final library = print.printRootContext(print.PrintContext(context));
  final formatter = DartFormatter();
  final emitter = DartEmitter(useNullSafetySyntax: true);
  final generatedCode = library.accept(emitter);

  final output = AssetId(
    buildStep.inputId.package,
    p.join('lib', 'switch.dart'),
  );
  buildStep.writeAsString(
    output,
    formatter.format(
        "// Generated file, do not modify\n// ignore_for_file: type=lint\n\n${generatedCode}"),
  );
}