no longer generate empty enum or server files (#1006)
diff --git a/protoc_plugin/CHANGELOG.md b/protoc_plugin/CHANGELOG.md index fd486a6..c3b2a1d 100644 --- a/protoc_plugin/CHANGELOG.md +++ b/protoc_plugin/CHANGELOG.md
@@ -1,3 +1,9 @@ +## 22.3.0-wip + +* No longer generate empty enum (`*.pbenum.dart`) files. +* No longer generate empty server (`*.pbserver.dart`) files. +* Ignore `implementation_imports` for some generated files. + ## 22.2.0 * Bump `protobuf` constraint to `^4.1.0`
diff --git a/protoc_plugin/Makefile b/protoc_plugin/Makefile index c7379fb..6747ca1 100644 --- a/protoc_plugin/Makefile +++ b/protoc_plugin/Makefile
@@ -70,8 +70,6 @@ TEST_PROTO_DIR=$(OUTPUT_DIR)/protos TEST_PROTO_LIBS=$(foreach f, $(TEST_PROTO_LIST), \ $(TEST_PROTO_DIR)/$(f).pb.dart \ - $(TEST_PROTO_DIR)/$(f).pbenum.dart \ - $(TEST_PROTO_DIR)/$(f).pbserver.dart \ $(TEST_PROTO_DIR)/$(f).pbjson.dart) TEST_PROTO_SRC_DIR=test/protos TEST_PROTO_SRCS=$(foreach proto, $(TEST_PROTO_LIST), \ @@ -105,7 +103,6 @@ -Iprotos \ --plugin=protoc-gen-dart=$(realpath $(PLUGIN_PATH)) $(PREGENERATED_SRCS) find lib/src/gen -name '*.pbjson.dart' -delete - find lib/src/gen -name '*.pbserver.dart' -delete dart format lib/src/gen protos: $(PLUGIN_PATH) $(TEST_PROTO_LIBS)
diff --git a/protoc_plugin/lib/src/file_generator.dart b/protoc_plugin/lib/src/file_generator.dart index 40306aa..ddca41c 100644 --- a/protoc_plugin/lib/src/file_generator.dart +++ b/protoc_plugin/lib/src/file_generator.dart
@@ -232,11 +232,11 @@ } final mainWriter = generateMainFile(config); - final enumWriter = generateEnumFile(config); + final enumWriter = hasEnums ? generateEnumFile(config) : null; final files = [ makeFile('.pb.dart', mainWriter.toString()), - makeFile('.pbenum.dart', enumWriter.toString()), + if (enumWriter != null) makeFile('.pbenum.dart', enumWriter.toString()), makeFile('.pbjson.dart', generateJsonFile(config)), ]; @@ -244,8 +244,9 @@ files.addAll([ makeFile('.pb.dart.meta', mainWriter.sourceLocationInfo.writeToJson().toString()), - makeFile('.pbenum.dart.meta', - enumWriter.sourceLocationInfo.writeToJson().toString()) + if (enumWriter != null) + makeFile('.pbenum.dart.meta', + enumWriter.sourceLocationInfo.writeToJson().toString()) ]); } if (options.useGrpc) { @@ -253,7 +254,9 @@ files.add(makeFile('.pbgrpc.dart', generateGrpcFile(config))); } } else { - files.add(makeFile('.pbserver.dart', generateServerFile(config))); + if (serviceGenerators.isNotEmpty) { + files.add(makeFile('.pbserver.dart', generateServerFile(config))); + } } return files; } @@ -457,10 +460,15 @@ return count; } + /// Returns whether this proto file defines any enums (either top level or + /// nested within messages). + bool get hasEnums => enumCount > 0; + /// Returns the contents of the .pbserver.dart file for this .proto file. String generateServerFile( [OutputConfiguration config = const DefaultOutputConfiguration()]) { if (!_linked) throw StateError('not linked'); + final out = makeWriter(); _writeHeading(out, extraIgnores: {'deprecated_member_use_from_same_package'});
diff --git a/protoc_plugin/lib/src/gen/dart_options.pbenum.dart b/protoc_plugin/lib/src/gen/dart_options.pbenum.dart deleted file mode 100644 index ab0e780..0000000 --- a/protoc_plugin/lib/src/gen/dart_options.pbenum.dart +++ /dev/null
@@ -1,10 +0,0 @@ -// -// Generated code. Do not modify. -// source: dart_options.proto -// -// @dart = 3.3 - -// ignore_for_file: annotate_overrides, camel_case_types, comment_references -// ignore_for_file: constant_identifier_names, library_prefixes -// ignore_for_file: non_constant_identifier_names, prefer_final_fields -// ignore_for_file: unnecessary_import, unnecessary_this, unused_import
diff --git a/protoc_plugin/lib/src/gen/google/api/http.pbenum.dart b/protoc_plugin/lib/src/gen/google/api/http.pbenum.dart deleted file mode 100644 index 4824393..0000000 --- a/protoc_plugin/lib/src/gen/google/api/http.pbenum.dart +++ /dev/null
@@ -1,10 +0,0 @@ -// -// Generated code. Do not modify. -// source: google/api/http.proto -// -// @dart = 3.3 - -// ignore_for_file: annotate_overrides, camel_case_types, comment_references -// ignore_for_file: constant_identifier_names, library_prefixes -// ignore_for_file: non_constant_identifier_names, prefer_final_fields -// ignore_for_file: unnecessary_import, unnecessary_this, unused_import
diff --git a/protoc_plugin/lib/src/gen/google/protobuf/duration.pbenum.dart b/protoc_plugin/lib/src/gen/google/protobuf/duration.pbenum.dart deleted file mode 100644 index 431da01..0000000 --- a/protoc_plugin/lib/src/gen/google/protobuf/duration.pbenum.dart +++ /dev/null
@@ -1,10 +0,0 @@ -// -// Generated code. Do not modify. -// source: google/protobuf/duration.proto -// -// @dart = 3.3 - -// ignore_for_file: annotate_overrides, camel_case_types, comment_references -// ignore_for_file: constant_identifier_names, library_prefixes -// ignore_for_file: non_constant_identifier_names, prefer_final_fields -// ignore_for_file: unnecessary_import, unnecessary_this, unused_import
diff --git a/protoc_plugin/pubspec.yaml b/protoc_plugin/pubspec.yaml index b652478..88c1b9c 100644 --- a/protoc_plugin/pubspec.yaml +++ b/protoc_plugin/pubspec.yaml
@@ -1,5 +1,5 @@ name: protoc_plugin -version: 22.2.0 +version: 22.3.0-wip description: A protobuf protoc compiler plugin used to generate Dart code. repository: https://github.com/google/protobuf.dart/tree/master/protoc_plugin