rules_proto_grpc/docs/contributing.rst

47 lines
1.9 KiB
ReStructuredText

:author: rules_proto_grpc
:description: Changelog for the rules_proto_grpc Bazel rules
:keywords: Bazel, Protobuf, gRPC, Protocol Buffers, Rules, Build, Starlark, Developers, Contributing
Contributing
============
Contributions are very welcome on this project. Issues should be raised for bugs and feature
requests. Pull requests should be targeted at the master branch and will run against CI.
.. note:: The rules in the repo are generated by the code in tools/rulegen and the output rules
should therefore not be edited directly. However, if you are not comfortable editing this code,
please submit a PR with just the output files edited and we'll help update the generator to get
the desired result.
Code Layout
-----------
Each language ``{lang}`` has a top-level subdirectory that contains:
1. ``docs/{lang}.rst``: Generated documentation for the language rules
2. ``{lang}/repositories.bzl``: Macro functions that declare repository rule dependencies for that
language
3. ``{lang}/{rule}.bzl``: Rule implementations of the form ``{lang}_{kind}_{type}``, where ``kind``
is one of ``proto|grpc`` and ``type`` is one of ``compile|library``
4. ``{lang}/BUILD.bazel``: ``proto_plugin()`` declarations for the available plugins for the
language
5. ``example/{lang}/{rule}/``: Generated ``WORKSPACE`` and ``BUILD.bazel`` demonstrating standalone
usage of the rules
6. ``{lang}/example/routeguide/``: Example routeguide example implementation, if possible
Rule Generation
---------------
To help maintain consistency of the rule implementations and documentation, all of the rule
implementations are generated by the tool ``//tools/rulegen``. Changes in the main ``README.rst``
should be placed in ``tools/rulegen/README.header.rst`` or ``tools/rulegen/README.footer.rst```.
Changes to generated rules should be put in the source files (example: ``tools/rulegen/java.go``).