| :author: rules_proto_grpc | |
| :description: rules_proto_grpc Bazel rules for Swift | |
| :keywords: Bazel, Protobuf, gRPC, Protocol Buffers, Rules, Build, Starlark, Swift | |
| Swift | |
| ===== | |
| Rules for generating Swift protobuf and gRPC ``.swift`` files and libraries using `Swift Protobuf <https://github.com/apple/swift-protobuf>`_ and `Swift gRPC <https://github.com/grpc/grpc-swift>`_ | |
| .. list-table:: Rules | |
| :widths: 1 2 | |
| :header-rows: 1 | |
| * - Rule | |
| - Description | |
| * - `swift_proto_compile`_ | |
| - Generates Swift protobuf ``.swift`` files | |
| * - `swift_grpc_compile`_ | |
| - Generates Swift protobuf and gRPC ``.swift`` files | |
| * - `swift_proto_library`_ | |
| - Generates a Swift protobuf library using ``swift_library`` from ``rules_swift`` | |
| * - `swift_grpc_library`_ | |
| - Generates a Swift protobuf and gRPC library using ``swift_library`` from ``rules_swift`` | |
| Installation | |
| ------------ | |
| The Swift module can be installed by adding the following lines to your MODULE.bazel file, replacing the version number placeholder with the desired version: | |
| .. code-block:: python | |
| bazel_dep(name = "rules_proto_grpc_swift", version = "<version number here>") | |
| .. _swift_proto_compile: | |
| swift_proto_compile | |
| ------------------- | |
| Generates Swift protobuf ``.swift`` files | |
| Example | |
| ******* | |
| Full example project can be found `here <https://github.com/rules-proto-grpc/rules_proto_grpc/tree/master/examples/swift/swift_proto_compile>`__ | |
| ``BUILD.bazel`` | |
| ^^^^^^^^^^^^^^^ | |
| .. code-block:: python | |
| load("@rules_proto_grpc_swift//:defs.bzl", "swift_proto_compile") | |
| swift_proto_compile( | |
| name = "person_swift_proto", | |
| protos = ["@rules_proto_grpc_example_protos//:person_proto"], | |
| ) | |
| swift_proto_compile( | |
| name = "place_swift_proto", | |
| protos = ["@rules_proto_grpc_example_protos//:place_proto"], | |
| ) | |
| swift_proto_compile( | |
| name = "thing_swift_proto", | |
| protos = ["@rules_proto_grpc_example_protos//:thing_proto"], | |
| ) | |
| Attributes | |
| ********** | |
| .. list-table:: Attributes for swift_proto_compile | |
| :widths: 1 1 1 1 4 | |
| :header-rows: 1 | |
| * - Name | |
| - Type | |
| - Mandatory | |
| - Default | |
| - Description | |
| * - ``protos`` | |
| - ``label_list`` | |
| - true | |
| - | |
| - List of labels that provide the ``ProtoInfo`` provider (such as ``proto_library`` from ``@protobuf``) | |
| * - ``options`` | |
| - ``string_list_dict`` | |
| - false | |
| - ``[]`` | |
| - Extra options to pass to plugins, as a dict of plugin label -> list of strings. The key * can be used exclusively to apply to all plugins | |
| * - ``verbose`` | |
| - ``int`` | |
| - false | |
| - ``0`` | |
| - The verbosity level. Supported values and results are 0: Show nothing, 1: Show command, 2: Show command and sandbox after running protoc, 3: Show command and sandbox before and after running protoc, 4. Show env, command, expected outputs and sandbox before and after running protoc | |
| * - ``prefix_path`` | |
| - ``string`` | |
| - false | |
| - ``""`` | |
| - Path to prefix to the generated files in the output directory | |
| * - ``extra_protoc_args`` | |
| - ``string_list`` | |
| - false | |
| - ``[]`` | |
| - A list of extra command line arguments to pass directly to protoc, not as plugin options | |
| * - ``extra_protoc_files`` | |
| - ``label_list`` | |
| - false | |
| - ``[]`` | |
| - List of labels that provide extra files to be available during protoc execution | |
| * - ``output_mode`` | |
| - ``string`` | |
| - false | |
| - ``PREFIXED`` | |
| - The output mode for the target. PREFIXED (the default) will output to a directory named by the target within the current package root, NO_PREFIX will output directly to the current package. Using NO_PREFIX may lead to conflicting writes | |
| Plugins | |
| ******* | |
| - `@rules_proto_grpc_swift//:proto_plugin <https://github.com/rules-proto-grpc/rules_proto_grpc/blob/master/modules/swift/BUILD.bazel>`__ | |
| .. _swift_grpc_compile: | |
| swift_grpc_compile | |
| ------------------ | |
| Generates Swift protobuf and gRPC ``.swift`` files | |
| Example | |
| ******* | |
| Full example project can be found `here <https://github.com/rules-proto-grpc/rules_proto_grpc/tree/master/examples/swift/swift_grpc_compile>`__ | |
| ``BUILD.bazel`` | |
| ^^^^^^^^^^^^^^^ | |
| .. code-block:: python | |
| load("@rules_proto_grpc_swift//:defs.bzl", "swift_grpc_compile") | |
| swift_grpc_compile( | |
| name = "thing_swift_grpc", | |
| protos = ["@rules_proto_grpc_example_protos//:thing_proto"], | |
| ) | |
| swift_grpc_compile( | |
| name = "greeter_swift_grpc", | |
| protos = ["@rules_proto_grpc_example_protos//:greeter_grpc"], | |
| ) | |
| Attributes | |
| ********** | |
| .. list-table:: Attributes for swift_grpc_compile | |
| :widths: 1 1 1 1 4 | |
| :header-rows: 1 | |
| * - Name | |
| - Type | |
| - Mandatory | |
| - Default | |
| - Description | |
| * - ``protos`` | |
| - ``label_list`` | |
| - true | |
| - | |
| - List of labels that provide the ``ProtoInfo`` provider (such as ``proto_library`` from ``@protobuf``) | |
| * - ``options`` | |
| - ``string_list_dict`` | |
| - false | |
| - ``[]`` | |
| - Extra options to pass to plugins, as a dict of plugin label -> list of strings. The key * can be used exclusively to apply to all plugins | |
| * - ``verbose`` | |
| - ``int`` | |
| - false | |
| - ``0`` | |
| - The verbosity level. Supported values and results are 0: Show nothing, 1: Show command, 2: Show command and sandbox after running protoc, 3: Show command and sandbox before and after running protoc, 4. Show env, command, expected outputs and sandbox before and after running protoc | |
| * - ``prefix_path`` | |
| - ``string`` | |
| - false | |
| - ``""`` | |
| - Path to prefix to the generated files in the output directory | |
| * - ``extra_protoc_args`` | |
| - ``string_list`` | |
| - false | |
| - ``[]`` | |
| - A list of extra command line arguments to pass directly to protoc, not as plugin options | |
| * - ``extra_protoc_files`` | |
| - ``label_list`` | |
| - false | |
| - ``[]`` | |
| - List of labels that provide extra files to be available during protoc execution | |
| * - ``output_mode`` | |
| - ``string`` | |
| - false | |
| - ``PREFIXED`` | |
| - The output mode for the target. PREFIXED (the default) will output to a directory named by the target within the current package root, NO_PREFIX will output directly to the current package. Using NO_PREFIX may lead to conflicting writes | |
| Plugins | |
| ******* | |
| - `@rules_proto_grpc_swift//:proto_plugin <https://github.com/rules-proto-grpc/rules_proto_grpc/blob/master/modules/swift/BUILD.bazel>`__ | |
| - `@rules_proto_grpc_swift//:grpc_plugin <https://github.com/rules-proto-grpc/rules_proto_grpc/blob/master/modules/swift/BUILD.bazel>`__ | |
| .. _swift_proto_library: | |
| swift_proto_library | |
| ------------------- | |
| Generates a Swift protobuf library using ``swift_library`` from ``rules_swift`` | |
| Example | |
| ******* | |
| Full example project can be found `here <https://github.com/rules-proto-grpc/rules_proto_grpc/tree/master/examples/swift/swift_proto_library>`__ | |
| ``BUILD.bazel`` | |
| ^^^^^^^^^^^^^^^ | |
| .. code-block:: python | |
| load("@rules_proto_grpc_swift//:defs.bzl", "swift_proto_library") | |
| swift_proto_library( | |
| name = "proto_swift_proto", | |
| protos = [ | |
| "@rules_proto_grpc_example_protos//:person_proto", | |
| "@rules_proto_grpc_example_protos//:place_proto", | |
| "@rules_proto_grpc_example_protos//:thing_proto", | |
| ], | |
| ) | |
| Attributes | |
| ********** | |
| .. list-table:: Attributes for swift_proto_library | |
| :widths: 1 1 1 1 4 | |
| :header-rows: 1 | |
| * - Name | |
| - Type | |
| - Mandatory | |
| - Default | |
| - Description | |
| * - ``protos`` | |
| - ``label_list`` | |
| - true | |
| - | |
| - List of labels that provide the ``ProtoInfo`` provider (such as ``proto_library`` from ``@protobuf``) | |
| * - ``options`` | |
| - ``string_list_dict`` | |
| - false | |
| - ``[]`` | |
| - Extra options to pass to plugins, as a dict of plugin label -> list of strings. The key * can be used exclusively to apply to all plugins | |
| * - ``verbose`` | |
| - ``int`` | |
| - false | |
| - ``0`` | |
| - The verbosity level. Supported values and results are 0: Show nothing, 1: Show command, 2: Show command and sandbox after running protoc, 3: Show command and sandbox before and after running protoc, 4. Show env, command, expected outputs and sandbox before and after running protoc | |
| * - ``prefix_path`` | |
| - ``string`` | |
| - false | |
| - ``""`` | |
| - Path to prefix to the generated files in the output directory | |
| * - ``extra_protoc_args`` | |
| - ``string_list`` | |
| - false | |
| - ``[]`` | |
| - A list of extra command line arguments to pass directly to protoc, not as plugin options | |
| * - ``extra_protoc_files`` | |
| - ``label_list`` | |
| - false | |
| - ``[]`` | |
| - List of labels that provide extra files to be available during protoc execution | |
| * - ``output_mode`` | |
| - ``string`` | |
| - false | |
| - ``PREFIXED`` | |
| - The output mode for the target. PREFIXED (the default) will output to a directory named by the target within the current package root, NO_PREFIX will output directly to the current package. Using NO_PREFIX may lead to conflicting writes | |
| * - ``deps`` | |
| - ``label_list`` | |
| - false | |
| - ``[]`` | |
| - List of labels to pass as deps attr to underlying lang_library rule | |
| * - ``module_name`` | |
| - ``string`` | |
| - false | |
| - | |
| - The name of the Swift module being built. | |
| .. _swift_grpc_library: | |
| swift_grpc_library | |
| ------------------ | |
| Generates a Swift protobuf and gRPC library using ``swift_library`` from ``rules_swift`` | |
| Example | |
| ******* | |
| Full example project can be found `here <https://github.com/rules-proto-grpc/rules_proto_grpc/tree/master/examples/swift/swift_grpc_library>`__ | |
| ``BUILD.bazel`` | |
| ^^^^^^^^^^^^^^^ | |
| .. code-block:: python | |
| load("@rules_proto_grpc_swift//:defs.bzl", "swift_grpc_library") | |
| swift_grpc_library( | |
| name = "greeter_swift_grpc", | |
| protos = [ | |
| "@rules_proto_grpc_example_protos//:greeter_grpc", | |
| "@rules_proto_grpc_example_protos//:thing_proto", | |
| ], | |
| ) | |
| Attributes | |
| ********** | |
| .. list-table:: Attributes for swift_grpc_library | |
| :widths: 1 1 1 1 4 | |
| :header-rows: 1 | |
| * - Name | |
| - Type | |
| - Mandatory | |
| - Default | |
| - Description | |
| * - ``protos`` | |
| - ``label_list`` | |
| - true | |
| - | |
| - List of labels that provide the ``ProtoInfo`` provider (such as ``proto_library`` from ``@protobuf``) | |
| * - ``options`` | |
| - ``string_list_dict`` | |
| - false | |
| - ``[]`` | |
| - Extra options to pass to plugins, as a dict of plugin label -> list of strings. The key * can be used exclusively to apply to all plugins | |
| * - ``verbose`` | |
| - ``int`` | |
| - false | |
| - ``0`` | |
| - The verbosity level. Supported values and results are 0: Show nothing, 1: Show command, 2: Show command and sandbox after running protoc, 3: Show command and sandbox before and after running protoc, 4. Show env, command, expected outputs and sandbox before and after running protoc | |
| * - ``prefix_path`` | |
| - ``string`` | |
| - false | |
| - ``""`` | |
| - Path to prefix to the generated files in the output directory | |
| * - ``extra_protoc_args`` | |
| - ``string_list`` | |
| - false | |
| - ``[]`` | |
| - A list of extra command line arguments to pass directly to protoc, not as plugin options | |
| * - ``extra_protoc_files`` | |
| - ``label_list`` | |
| - false | |
| - ``[]`` | |
| - List of labels that provide extra files to be available during protoc execution | |
| * - ``output_mode`` | |
| - ``string`` | |
| - false | |
| - ``PREFIXED`` | |
| - The output mode for the target. PREFIXED (the default) will output to a directory named by the target within the current package root, NO_PREFIX will output directly to the current package. Using NO_PREFIX may lead to conflicting writes | |
| * - ``deps`` | |
| - ``label_list`` | |
| - false | |
| - ``[]`` | |
| - List of labels to pass as deps attr to underlying lang_library rule | |
| * - ``module_name`` | |
| - ``string`` | |
| - false | |
| - | |
| - The name of the Swift module being built. |