plugin.md 3.0 KB

protoc gRPC Swift plugin

gRPC Swift provides a plugin for the protocol buffer compiler protoc to generate classes for clients and services.

Building the Plugin

The protoc-gen-grpc-swift plugin can be built by using the Makefile in the top-level directory:

$ make plugins

The Swift Package Manager may also be invoked directly to build the plugin:

$ swift build --product protoc-gen-grpc-swift

The plugin must be in your PATH environment variable or specified directly when invoking protoc.

Plugin Options

Visibility

The Visibility option determines the access control for generated code.

  • Possible values: Public, Internal
  • Default value: Internal

Server

The Server option determines whether server code is generated. The generated server code includes a protocol which users must implement to provide the logic for their service.

  • Possible values: true, false
  • Default value: true

Client

The Client option determines whether client code is generated. The generated client code includes a protocol and a class conforming to that protocol.

  • Possible values: true, false
  • Default value: true

TestClient

The TestClient option determines whether test client code is generated. This does not include the protocol generated by the Client option.

  • Possible values: true, false
  • Default value: false

FileNaming

The FileNaming option determines how generated source files should be named.

  • Possible values:
    • FullPath: The full path of the input file will be used; foo/bar/baz.proto will generate foo/bar/baz.grpc.proto
    • PathToUnderscores: Directories structures are flattened; foo/bar/baz.proto will generate foo_bar_baz.grpc.proto
    • DropPath: The path is dropped and only the name of the file is kept; foo/bar/baz.proto will generate baz.grpc.proto
  • Default value: FullPath

ProtoPathModuleMappings

The ProtoPathModuleMappings option allows module mappings to be specified. See the SwiftProtobuf documentation.

Specifying Options

To pass extra parameters to the plugin, use a comma-separated parameter list separated from the output directory by a colon. Alternatively use the --grpc-swift_opt flag.

For example, to generate only client stubs:

protoc <your proto> --grpc-swift_out=Client=true,Server=false:.

Or, in the alternate syntax:

protoc <your proto> --grpc-swift_opt=Client=true,Server=false --grpc-swift_out=.