Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[prost-build] Add Message and Enum specific attributes #783

Closed
damelLP opened this issue Dec 14, 2022 · 3 comments · Fixed by #784
Closed

[prost-build] Add Message and Enum specific attributes #783

damelLP opened this issue Dec 14, 2022 · 3 comments · Fixed by #784

Comments

@damelLP
Copy link
Contributor

damelLP commented Dec 14, 2022

I have a large-ish api and want to be able to auto-generate derive_builder builders for it similar to here #399.

From the code-generator it seems to be an easy addition of just adding the builder functions.
Example usage looks like this.

        prost_build::Config::new()
        .message_attribute(".", "#[derive(derive_builder::Builder)]")
        .compile_protos(...)
@damelLP damelLP changed the title Add Message and Enum specific attributes [prost-build] Add Message and Enum specific attributes Dec 15, 2022
@LucioFranco
Copy link
Member

Could you explain why you need a message attribute over https://docs.rs/prost-build/latest/prost_build/struct.Config.html#method.type_attribute using this?

@damelLP
Copy link
Contributor Author

damelLP commented Dec 16, 2022

Hi @LucioFranco, yes, the type attribute is applied to all the different types that get generated, and the derive builder attribute fails to compile on enums.

error: Unsupported shape `enum`
   --> src/gen/api.rs:401:10
    |
401 | #[derive(derive_builder::Builder)]
    |          ^^^^^^^^^^^^^^^^^^^^^^^

As message is mapped to a struct and oneof / enums are mapped to enums this would enable you to generate attributes that are only relevant or correct for a particular type shape.

@LucioFranco
Copy link
Member

Got it I think that makes sense.

ryankurte pushed a commit to ryankurte/prost that referenced this issue Jan 1, 2023
Jasperav added a commit to Jasperav/prost that referenced this issue Jun 8, 2023
* Allow file descriptor be generated without --include_source_info (tokio-rs#786)

* Allow file descriptor be generated without --include_source_info

The file descriptor sets generated by rules_proto in bazel don't have
this by default, so this allows some flexibility for users to reuse
results that are already available to them.  It's fairly trivial
adjustment so it seemed reasonable to me to allow the flexibility.

* revert breaking changes and add default

* release 0.11.5 (tokio-rs#788)

* Add message and enum attributes to prost-build (tokio-rs#784)

closes tokio-rs#783

* chore: Prepare 0.11.6 release (tokio-rs#794)

* chore: Added Kani to CI. (#1) (tokio-rs#798)

* Added Kani documentation. (tokio-rs#799)

* Fix issue with negative nanos in Duration::try_from(), and add tests (tokio-rs#803)

* Fix issue with negative nanos in Duration::try_from(), and add a unit test

* add proptest for negative nanos

* PR comment: remove spurious dbg

* Prevent spurious overflow in check_duration_roundtrip test (tokio-rs#804)

Co-authored-by: Lucio Franco <luciofranco14@gmail.com>

* Clarify `default_package_filename` documentation. (tokio-rs#809)

* Bump msrv to 1.60 (tokio-rs#814)

* chore(types): Remove including generated code (tokio-rs#801)

* chore: Update github action (tokio-rs#815)

Co-authored-by: Lucio Franco <luciofranco14@gmail.com>

* chore: Add cargo-machete to detect unused dependencies (tokio-rs#817)

* chore: Update msrv to 1.60 (tokio-rs#818)

* feat: Added try_normalize to Timestamp (tokio-rs#796)

Co-authored-by: Lucio Franco <luciofranco14@gmail.com>

* Update PropProof docs to note the need to submodule init (tokio-rs#805)

Co-authored-by: Lucio Franco <luciofranco14@gmail.com>

* feat(build): Add direct fds compile support (tokio-rs#819)

This commit adds two new compile functions that allow passing a
`FileDescriptorSet` and it will generate the Rust code. This allows
users to use libraries like `protox` directly and in an ergonomic way.

* release 0.11.7 (tokio-rs#821)

* fix: correct change in visibility of compiler module (tokio-rs#824)

Introduced in tokio-rs#801
Closes tokio-rs#823

* release 0.11.8 (tokio-rs#825)

* Add existing roundtrip test to Kani CI and avoid recursive submoduling (tokio-rs#828)

* Add existing roundtrip test to Kani CI

* Bump up Kani version

* Remove `v` from GA version

* Update to `syn@2` & `prettyplease@0.2` (tokio-rs#833)

* Fix corrupted tests and missing CI testing (tokio-rs#832)

Co-authored-by: Lucio Franco <luciofranco14@gmail.com>

* chore: Update to criterion 0.4 (tokio-rs#835)

* Fix build in directory not named `prost` (tokio-rs#839)

This library will fail to build with the following error when checked
out into a directory not named exactly `prost`:

  error: failed to load manifest for workspace member `/home/alex/src/prost-rs/tests/single-include`

  Caused by:
    failed to load manifest for dependency `prost`

  Caused by:
    failed to read `/home/alex/src/prost/Cargo.toml`

  Caused by:
    No such file or directory (os error 2)

This is because the `single-include` test depends on `prost` with the
path `../../../prost`. This patch fixes the issue by correcting the path
to `../..`.

* prost-build: support boxing fields (tokio-rs#802)

This allows the user to request boxing of specific fields. This is useful for
enum types that might have variants of very different size.

* chore: Update to baptiste0928/cargo-install@v2 (tokio-rs#840)

Co-authored-by: Lucio Franco <luciofranco14@gmail.com>

* Fix typo in bail message (tokio-rs#848)

---------

Co-authored-by: David Freese <freese@google.com>
Co-authored-by: Lucio Franco <luciofranco14@gmail.com>
Co-authored-by: damel_lp <dlambertpowell@gmail.com>
Co-authored-by: Yoshiki Takashima <ytakashi@andrew.cmu.edu>
Co-authored-by: Daniel Schwartz-Narbonne <danielsn@users.noreply.github.com>
Co-authored-by: Gilad Naaman <gilad@naaman.io>
Co-authored-by: tottoto <tottotodev@gmail.com>
Co-authored-by: Oliver Browne <109075559+oliverbrowneprima@users.noreply.github.com>
Co-authored-by: Marcus Griep <marcus@griep.us>
Co-authored-by: Adrian Palacios <73246657+adpaco-aws@users.noreply.github.com>
Co-authored-by: Donough Liu <liudingming@bytedance.com>
Co-authored-by: Alex O'Brien <3541@3541.website>
Co-authored-by: Thomas Orozco <thomas@orozco.fr>
Co-authored-by: Brendon Daugherty <brendon1097@gmail.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 a pull request may close this issue.

2 participants