This repository contains Exabel APIs.
All APIs should follow Google's API Design Guide.
Each API folder is also a maven module that will generate Java classes of the proto buffer
definitions and proto descriptors. The protobuf-maven-plugin
is used to automatically download
and invoke the correct version of protoc
.
mvn clean install
will generate source code for protocol buffers and gRPC services and compile
the sources into the the module's artifact. It will also generate protobuf descriptors to
target/generated-resources/protobuf/descriptor-sets/descriptor.pb
.
We are using the following protoc plugins:
protoc-gen-grpc-java
: To generate Java stubs of gRPC servers and clients.exabel-proto-extensions
: To generate additional setter and getter methods on proto messages.
This repository uses prototool to format proto buffers and to detect breaking changes. The tool is configured using [prototool.yaml].
(Also see https://github.com/uber/prototool/blob/dev/docs/install.md.)
Mac: brew install prototool
Linux:
curl -sSL \
https://github.com/uber/prototool/releases/download/v1.9.0/prototool-$(uname -s)-$(uname -m).tar.gz | \
tar -C /usr/local --strip-components 1 -xz
(sudo
may be required.)
prototool lint
prototool format -d
All code must be linted and formatted before it can be submitted. You can auto-format using
prototool format -w
prototool break check [--git-branch baseline]
Breaking changes should not be submitted. (This may be relaxed in the future.)