42 строки
1.2 KiB
Markdown
42 строки
1.2 KiB
Markdown
# Classify Client
|
|
|
|
This is an optimized version of the classify client endpoint in [Normandy](https://github.com/mozilla/normandy).
|
|
|
|
## Dev instructions
|
|
|
|
This is a normal Cargo project, so after cloning the repository, you can build and run it with
|
|
|
|
```shell
|
|
$ cargo build
|
|
$ cargo run
|
|
```
|
|
|
|
This project should run on the latest stable version of Rust. Unstable features are not allowed.
|
|
|
|
### GeoIP Database
|
|
|
|
A GeoIP database is required. For development purposes, one can be obtained from [the Maxmind website](https://dev.maxmind.com/geoip/geoip2/geolite2/). The GeoLite2 Country database is recommended. The file `GeoLite2-Country.mmdb` should be placed at the root of the repository.
|
|
|
|
## Tests
|
|
|
|
Tests can be run with Cargo as well
|
|
|
|
```shell
|
|
$ cargo test
|
|
```
|
|
|
|
## Linting
|
|
|
|
Linting is handled via
|
|
[Therapist](https://therapist.readthedocs.io/en/latest/). After installing it,
|
|
enable the git hooks using either `therapist install` or `therapist install
|
|
--fix`. The `--fix` variant will automatically format your code upon commit.
|
|
The variant without `--fix` will simply show an error and ask you to reformat
|
|
the code using other means before committing. Therapist runs in CI.
|
|
|
|
The checks Therapist runs are:
|
|
|
|
* Rustfmt
|
|
* Clippy, using the `clippy::all` preset
|
|
|