Browse Source

Add the option to generate code for services that do not provide a package name.

Example of the resulting generated code: https://gist.github.com/MrMage/cbd6277d3c4e51179cae2798e70b2112
Daniel Alm 7 years ago
parent
commit
77c29ddd46

+ 15 - 3
Plugin/Sources/protoc-gen-swiftgrpc/filters.swift

@@ -74,7 +74,11 @@ func pathName(filter _: String, arguments: [Any?]) throws -> String {
   else {
     throw invalidArgumentType(filter: "path", required: "MethodDescriptor", received: arguments[2])
   }
-  return "/" + protoFile.package + "." + service.name + "/" + method.name
+  if !protoFile.package.isEmpty {
+    return "/" + protoFile.package + "." + service.name + "/" + method.name
+  } else {
+    return "/" + service.name + "/" + method.name
+  }
 }
 
 func packageServiceMethodName(filter: String, arguments: [Any?]) throws -> String {
@@ -93,7 +97,11 @@ func packageServiceMethodName(filter: String, arguments: [Any?]) throws -> Strin
   else {
     throw invalidArgumentType(filter: filter, required: "MethodDescriptor", received: arguments[0])
   }
-  return protoFile.package.capitalized.undotted + "_" + service.name + method.name
+  if !protoFile.package.isEmpty {
+    return protoFile.package.capitalized.undotted + "_" + service.name + method.name
+  } else {
+    return service.name + method.name
+  }
 }
 
 func packageServiceName(filter: String, arguments: [Any?]) throws -> String {
@@ -108,7 +116,11 @@ func packageServiceName(filter: String, arguments: [Any?]) throws -> String {
   else {
     throw invalidArgumentType(filter: filter, required: "ServiceDescriptor", received: arguments[0])
   }
-  return protoFile.package.capitalized.undotted + "_" + service.name
+  if !protoFile.package.isEmpty {
+    return protoFile.package.capitalized.undotted + "_" + service.name
+  } else {
+    return service.name
+  }
 }
 
 class GRPCFilterExtension: Extension {

+ 0 - 4
Plugin/Sources/protoc-gen-swiftgrpc/main.swift

@@ -135,10 +135,6 @@ func main() throws {
     if fileDescriptor.services.count > 0 {
       // a package declaration is required for file containing service(s)
       let package = fileDescriptor.package
-      guard package != "" else {
-        print("ERROR: no package for \(fileDescriptor.name)")
-        continue
-      }
 
       // generate separate implementation files for client and server
       let context: [String: Any] = [