generate method

  1. @override
Future<Directory> generate()
override

Implementation

@override
Future<Directory> generate() async {
  final contexts = source.map(_one);

  final root = Directory.create(target);
  await root.create();

  final generatedFile = File.create(
    root.entity.uri.resolve('generated.dart'),
  );

  await generatedFile.create();
  root.files.add(generatedFile);

  final fixnum = Import('package:fixnum/fixnum.dart');
  await fixnum.writeTo(generatedFile);

  for (final context in contexts) {
    print('context: ' + context.scanner.location.toolString);
    for (final message in context.syntax.messages) {
      print('message: ' + message.name.value);
      final generatedClass = _class(message, context.syntax);

      await generatedClass.writeTo(generatedFile);
    }
  }

  await generatedFile.style();

  return root;
}