generateFiles method
Generates all the Dart files for this .proto file.
Implementation
List<CodeGeneratorResponse_File> generateFiles(OutputConfiguration config) {
if (!_linked) throw StateError('not linked');
CodeGeneratorResponse_File makeFile(String extension, String content) {
final protoUrl = Uri.file(descriptor.name);
final dartUrl = config.outputPathFor(protoUrl, extension);
return CodeGeneratorResponse_File()
..name = dartUrl.path
..content = content;
}
final mainWriter = generateMainFile(config);
final enumWriter = generateEnumFile(config);
final generateMetadata = options.generateMetadata;
final files = [
makeFile('.pb.dart', mainWriter.emitSource(format: !generateMetadata)),
makeFile(
'.pbenum.dart',
enumWriter.emitSource(format: !generateMetadata),
),
// TODO(devoncarew): Consider not emitting empty json files.
makeFile('.pbjson.dart', generateJsonFile(config)),
];
if (generateMetadata) {
files.addAll([
makeFile(
'.pb.dart.meta',
mainWriter.sourceLocationInfo.writeToJson().toString(),
),
makeFile(
'.pbenum.dart.meta',
enumWriter.sourceLocationInfo.writeToJson().toString(),
),
]);
}
if (options.useGrpc) {
if (grpcGenerators.isNotEmpty) {
files.add(makeFile('.pbgrpc.dart', generateGrpcFile(config)));
}
} else {
if (serviceGenerators.isNotEmpty) {
files.add(makeFile('.pbserver.dart', generateServerFile(config)));
}
}
return files;
}