Skip to content

feat(swift): add protobuf generation support - #6697

Merged
nolanleastin merged 11 commits into
mainfrom
neastin/swift-protobuf
Jul 9, 2026
Merged

feat(swift): add protobuf generation support#6697
nolanleastin merged 11 commits into
mainfrom
neastin/swift-protobuf

Conversation

@nolanleastin

@nolanleastin nolanleastin commented Jul 7, 2026

Copy link
Copy Markdown
Contributor

This change introduces support for generating raw Swift Protobuf and gRPC-Swift stub files directly using protoc, bypassing the standard GAPIC client generation when requested. This is done by adding a new "swift-protobuf" template option to the Swift module configuration.

Produces the following: https://depot.code.corp.goog/experimental/google-cloud-swift/pull/300

Issue: googleapis/google-cloud-swift#452

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request adds support for a new "swift-protobuf" template in the Swift module generation process. It updates the configuration schema documentation, adds Template, IncludeList, and ModulePath fields to the SwiftModule configuration struct, implements a compileProtobufs function to run protoc with the correct imports, and adds a corresponding unit test. The feedback suggests explicitly handling all supported templates in the switch statement and returning errors for unknown or unsupported templates to prevent silent failures, which also requires importing the "fmt" package.

Comment thread internal/librarian/swift/generate_module.go Outdated
Comment thread internal/librarian/swift/generate_module.go Outdated
@nolanleastin nolanleastin changed the title swift protobuf generation feat(swift): add protobuf generation support Jul 8, 2026
@nolanleastin
nolanleastin force-pushed the neastin/swift-protobuf branch from b8df067 to a8ee361 Compare July 8, 2026 17:13
@nolanleastin
nolanleastin marked this pull request as ready for review July 8, 2026 17:27
@nolanleastin
nolanleastin requested a review from a team as a code owner July 8, 2026 17:27

@noahdietz noahdietz left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewing mostly from a Librarian config perspective.

Comment thread internal/config/swift.go
@noahdietz
noahdietz requested a review from coryan July 8, 2026 17:36
@noahdietz

Copy link
Copy Markdown
Contributor

adding @coryan to reviewers from Swift side

@coryan coryan left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There is something awkward about a "template" parameter that does not control what template subdirectory to use. Does this belong in a separate "language"?

Comment thread internal/config/swift.go Outdated
Comment thread internal/librarian/swift/generate_module.go
Comment thread internal/librarian/swift/generate_module.go Outdated
Comment thread internal/librarian/swift/generate_module.go Outdated
Comment thread internal/librarian/swift/generate_module.go Outdated
Comment thread internal/librarian/swift/generate_module.go Outdated
Comment thread internal/librarian/swift/generate_module.go Outdated
@nolanleastin
nolanleastin force-pushed the neastin/swift-protobuf branch from 88438eb to e8f74a4 Compare July 8, 2026 22:43
@nolanleastin
nolanleastin requested review from a team as code owners July 8, 2026 23:01
Comment thread internal/sidekick/parser/discovery/discovery_test.go Outdated
@nolanleastin
nolanleastin force-pushed the neastin/swift-protobuf branch from b027150 to e8f74a4 Compare July 8, 2026 23:20
Comment thread internal/config/swift.go Outdated
@nolanleastin
nolanleastin force-pushed the neastin/swift-protobuf branch from 63aa4c3 to 2766c7e Compare July 9, 2026 16:26
@nolanleastin
nolanleastin force-pushed the neastin/swift-protobuf branch from 2766c7e to e457e92 Compare July 9, 2026 16:28
@nolanleastin
nolanleastin merged commit 3bebf26 into main Jul 9, 2026
53 checks passed
@nolanleastin
nolanleastin deleted the neastin/swift-protobuf branch July 9, 2026 16:32
noahdietz pushed a commit that referenced this pull request Jul 13, 2026
🤖 I have created a release *beep* *boop*
---


##
[0.26.0](v0.25.0...v0.26.0)
(2026-07-13)


### Features

* **internal/gem:** add gem package to install Ruby gem tools
([#6724](#6724))
([40ba6df](40ba6df))
* **internal/librarian/java:** add ApplyMoveActionsToLibrary helper and
unit tests
([#6731](#6731))
([f25bd33](f25bd33))
* **internal/librarian/java:** add RestructureToLibrary helper and unit
tests ([#6757](#6757))
([b2ff68c](b2ff68c)),
closes [#6516](#6516)
* **internal/librarian/java:** add ToKeepSet helper and unit tests
([#6730](#6730))
([df99304](df99304)),
closes [#6516](#6516)
* **internal/librarian/java:** integrate native Go postprocessor into
Java generator
([#6768](#6768))
([074059d](074059d)),
closes [#6516](#6516)
* **internal/librarian/java:** mark legacy postprocessing for
deprecation
([#6716](#6716))
([78a4ab6](78a4ab6)),
closes [#6516](#6516)
* **internal/librarian/nodejs:** use cache and bin directories for
nodejs install
([#6680](#6680))
([7f88869](7f88869))
* **internal/librarian/php:** add inital PHP client library generator
([#6703](#6703))
([9a45ab1](9a45ab1))
* **internal/librarian/php:** add tool installation directory helpers
([#6717](#6717))
([9cdf0b5](9cdf0b5)),
closes [#6630](#6630)
* **internal/librarian/ruby:** support installing Ruby gem dependencies
([#6751](#6751))
([bbce2c4](bbce2c4)),
closes [#6634](#6634)
* **internal/librarian:** add ruby tools directory to env output
([#6781](#6781))
([c220d71](c220d71))
* **internal/postprocessing:** add Apply pipeline runner and tests
([#6714](#6714))
([5cb8f66](5cb8f66)),
closes [#6516](#6516)
* **internal/postprocessing:** add ApplyMethodOperations batch runner
and tests ([#6698](#6698))
([8377d53](8377d53)),
closes [#6516](#6516)
* **internal/postprocessing:** add applyToFiles and RemoveFiles
([#6673](#6673))
([2f4b437](2f4b437)),
closes [#6516](#6516)
* **internal/postprocessing:** add CopyFiles batch runner and tests
([#6686](#6686))
([20c3a1a](20c3a1a))
* **internal/postprocessing:** add ReplaceAll and ReplaceRegexAll batch
runners and tests
([#6688](#6688))
([bb18f06](bb18f06))
* **internal/protoc:** add protoc installation and use installed
`protoc` in Java generation
([#6622](#6622))
([00ee24d](00ee24d))
* **internal/protoc:** add Run function
([#6699](#6699))
([cd8a1d4](cd8a1d4)),
closes [#6558](#6558)
* **internal/serviceconfig:** allowlist API paths for php
([#6789](#6789))
([7907686](7907686)),
closes [#6629](#6629)
* **internal/tool/gem:** verify input directories and tools before
installation
([#6778](#6778))
([3086d63](3086d63))
* **java:** append versions.txt on add
([#6653](#6653))
([9e9e645](9e9e645))
* **librarian/internal/config:** add php config
([#6701](#6701))
([939ae6f](939ae6f))
* **migrate:** discover and list PHP libraries during migration
([#6728](#6728))
([e552b89](e552b89))
* **sidekick/parser:** correct LRO poller service
([#6704](#6704))
([1d4b2d1](1d4b2d1))
* **sidekick/rust:** remove unstable gate for LRO tracing
([#6459](#6459))
([8266ce3](8266ce3))
* **sidekick/swift:** discovery LROs
([#6738](#6738))
([c294d15](c294d15))
* **sidekick/swift:** generate deprecation attributes
([#6750](#6750))
([145e8ae](145e8ae))
* **sidekick/swift:** traits with dependencies
([#6709](#6709))
([e8389f2](e8389f2))
* **swift:** add protobuf generation support
([#6697](#6697))
([3bebf26](3bebf26))
* **tool/cmd/migrate/php:** scaffold composer tools for php
([#6736](#6736))
([f23b451](f23b451))
* **tool/cmd/migrate:** add support to php
([#6726](#6726))
([586bac0](586bac0)),
closes [#6723](#6723)
* **tool/cmd/migrate:** support union versions in PHP OwlBot configs
([#6782](#6782))
([7690206](7690206)),
closes [#6779](#6779)


### Bug Fixes

* **internal/librarian/java:** remove excluded_poms from repometadata
([#6676](#6676))
([5e0f7f2](5e0f7f2))
* **internal/librarian/php:** enforce explicit API paths and add default
output path
([#6740](#6740))
([347bbd6](347bbd6))
* **internal/librarian:** preserve gem tools during tidy
([#6783](#6783))
([0150007](0150007))
* **internal/librarian:** preserve maven and protoc configuration during
tidy ([#6702](#6702))
([b439528](b439528)),
closes [#6558](#6558)
* **internal/snippetmetadata:** disable HTML escaping in JSON output
([#6777](#6777))
([4da5e28](4da5e28)),
closes [#6776](#6776)
* **librarian/rust:** detect inconsistent repos
([#6766](#6766))
([82ce5a9](82ce5a9))
* **sidekick/swift:** missing enum value docs
([#6727](#6727))
([e9020d2](e9020d2))
* **tool/cmd/migrate:** populate API paths from .OwlBot.yaml during
migrate for php
([#6739](#6739))
([6a15260](6a15260))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants