# ReProto Compiler
[![Build Status](https://travis-ci.org/reproto/reproto.svg?branch=master)](https://travis-ci.org/reproto/reproto)
[![crates.io](https://img.shields.io/crates/v/reproto.svg?maxAge=2592000)](https://crates.io/crates/reproto)
The ReProto project is a language-neutral protocol specification, aimed towards describing and generating
code for handling messages exchanged through JSON-based APIs.
See [Specification][spec] for details on what the syntax of `.reproto` files is.
See [Examples][examples] for some example API specifications.
**Note:** This project is in an Alpha-stage.
[spec]: /doc/spec.md
[examples]: /examples
# Example
Make you have [gotten started with Rust][rust-get-started].
Install reproto through cargo:
```bash
$> cargo install reproto
```
This will install the command into `~/.cargo/bin`, make sure it is in your `$PATH`.
Using the [FasterXML][fasterxml] backend for Java:
```bash
$> reproto --debug compile -b java -m fasterxml -o target/java \
--path examples \
--package heroic.v1
```
Multiple paths can be included, and the same declarations will extend each other:
```bash
$> reproto --debug compile -b java -m fasterxml -o target/java \
--path examples \
--path examples/ext \
--package heroic.v1
```
This will generate code for the plain python backend:
```bash
$> reproto --debug compile -b python -o target/python \
--path examples \
heroic.v1
```
[fasterxml]: https://github.com/FasterXML/jackson-annotations
## [Maven Plugin][maven-plugin]
A Maven plugin that integrates reproto into the build lifecycle of a maven project.
[maven-plugin]: https://github.com/reproto/reproto-maven-plugin
## [VIM Plugin][vim]
A VIM plugin that provides syntax highlighting.
[vim]: https://github.com/reproto/reproto-vim
[rust-get-started]: https://doc.rust-lang.org/book/getting-started.html