pachyderm 0.4.1

The official Pachyderm Rust library
Documentation
# Contributor guide

## Code

### Layout

Code layout, as of 8/2020:

```
.
├── build.rs - script to compile protos, run when you execute `cargo build`
├── etc
│   ├── fix_protos.sh - strips gogoproto annotations from protobufs
│   ├── travis_before_install.sh - run in the `before_install` phase of TravisCI
│   ├── travis_setup.sh - run in the `setup` phase of TravisCI
│   └── travis_test.sh - run in `test` phase of TravisCI
├── examples
│   ├── hello_world.rs - the hello world of pachyderm
│   └── opencv.rs - the canonical opencv demo, ported to rust
├── fuzz - fuzz tests of pachyderm internals
│   └── fuzz_targets
│       ├── extract_restore.rs - fuzzes extract/restore-related functionality in pachyderm
│       └── pfs.rs - fuzzes PFS
├── proto/ - a copy of the protobufs from the pachyderm project
├── rustfmt.toml - config for rustfmt
└── src
    └── lib.rs - the library source code
```

### Style

Code is formatted via rustfmt. [Make sure to install
it](https://github.com/rust-lang/rustfmt#quick-start), then simply run
`cargo fmt`.

### Rebuilding protobuf code

To rebuild protobuf code, run:

```bash
# copy the protobufs into ./proto
PACHYDERM_ROOT="<path to pachyderm>" make clean proto
# re-compile the protos and library
cargo build
```

## Testing

### Examples

Because the library is 100% auto-generated, there aren't any unit tests. You
can run the examples as a poor man's integration tests via:

```bash
cargo run --example hello_world -- "grpc://<pachd hostname>:30650"
cargo run --example opencv -- "grpc://<pachd hostname>:30650"
```

### Fuzzers

Since rust has excellent fuzzer facilities, we have written a couple of
fuzzers of internal Pachyderm functionality that use rust-pachyderm.

#### Extract/restore

This fuzzes extract/restore-related functionality, which is important since
it's employed for backup/restore and migrations in Pachyderm. To run:

```bash
PACHD_ADDRESS="grpc://<pachd hostname>:30650" make fuzz-extract-restore
```

#### PFS

Fuzzes PFS functionality. To run:

```bash
PACHD_ADDRESS="grpc://<pachd hostname>:30650" make fuzz-pfs
```

### Linting

To lint, install [clippy](https://github.com/rust-lang/rust-clippy) and run
`cargo clippy`. This is unlikely to find anything actionable since the library
is nearly 100% auto-generated.

## Documentation

Docs for releases are available on [docs.rs](https://docs.rs/pachyderm). You
can also build the docs yourself locally:

```bash
cargo doc --package pachyderm
```

## Releasing

To make a new release, from the master branch:

* Update the version in `Cargo.toml`
* Update `CHANGELOG.md`
* Run `cargo publish`