Metadata-Version: 2.1
Name: exonum-precheck
Version: 0.1.3
Summary: Exonum precheck deployment script
Home-page: https://github.com/popzxc/exonum_precheck
Author: Igor Aleksanov
License: UNKNOWN
Platform: UNKNOWN
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Topic :: Security :: Cryptography
Requires-Python: >=3.4
Description-Content-Type: text/markdown
Requires-Dist: pyyaml

# Exonum deployment precheck script

`exonum_precheck` is a script which verifies that all the expected checks are OK for code you're about to push.
It is supposed that you'll run this script before every push at the [Exonum](https://github.com/exonum/exonum) repository.

This command loads `.travis.yml` and performs all the checks (tests and lints) exactly as they will be performed on the CI server.
Also if installed rustc version doesn't match the one in the travis config, a warning will be shown.

## Prerequirements

You should have `clippy`, `rustfmt`, `deadlinks`, `cspell` and `md` installed:

```sh
cargo install cargo-deadlinks
rustup component add rustfmt
rustup component add clippy
npm install cspell
npm install md
```

## Example

```sh
cd exonum_folder
python3 -m exonum_precheck
```

Example output (actually it's colored):
```sh
 Tests results:
 Error: cargo test --all
 Success: cargo run -p exonum --example explorer
 Success: cargo run -p exonum-testkit --example timestamping
 Success: cargo run -p exonum-time --example simple_service
 Lints results:
 Success: npm run cspell
 Success: npm run md
 Success: cargo clippy --all --benches --features "long_benchmarks"
 Success: cargo fmt --all -- --check
 Success: cargo clean --doc
 Success: cargo doc --no-deps
 Success: mkdir -p target/doc/exonum_configuration
 Success: mkdir -p target/std/string
 Success: touch target/std/string/struct.String.html
 Success: touch target/std/primitive.usize.html
 Success: touch target/doc/enum.HashTag.html
 Success: cargo deadlinks --dir target/doc
```

## Using as a git hook

This script can be also used as a prepush hook:
```sh
echo '#!/bin/sh\npython3 -m exonum_precheck || exit 1\n' > ./exonum_folder/.git/hooks/pre-push
chmod +x ./exonum_folder/.git/hooks/pre-push
```

With that hook you won't be able to push unless all the expected CI checks are passed.
However, be careful: if you're going to work on a work-in-progress branch which'll have broken tests, you'll have to temporary remove the hook.

## Installing

Install and update using [pip](https://pip.pypa.io/en/stable/quickstart/):

```
pip install -U exonum_precheck
```

## LICENSE

Calorizator parser is licensed under the MIT License.
See [LICENSE](LICENSE) for details.


