* ci: add separate `typo` job * add `typos.toml` for false positives * fix all typos * ci: add `cargo doc` step * fix doc errors * contributing.md: update passing CI steps * fix more typos, add exception to `cryptonight/` * ci: move `cargo doc` step within `ci` job It needs dependencies. * ci: add https://github.com/Cuprate/cuprate/pull/63 * test-utils: fix typo * ci: switch `rustup update` and switch order * ci: only update rust on unix * ci: set `RUSTDOCFLAGS` env earlier * ci: only run `cargo doc` on linux * ci: remove `bash` on `cargo doc` * ci: remove `--all-targets` We now have the target OS's in CI, no need to compile for each. * contributing.md: update ci steps * ci: add `--all-targets` back to clippy, build * update contributing.md
1.7 KiB
Contributing to Cuprate
Introduction
Thank you for wanting to help out! Cuprate is in the stage where things are likely to change quickly, so it's recommend you join our Matrix room.
Making a PR
Once you have found something you would like to work on by either looking at the open issues or joining Cuprate's Matrix room and asking it's recommended to make your interest on working on that thing known so people don't duplicate work.
When you are at a stage where you would like feedback you can open a draft PR, keep in mind that feedback may take time especially if the change is large. Once your PR is at the stage where you feel it's ready to go, open it for review.
Passing CI
The first 3 steps to CI are formatting, typo, and documentation checking.
Check if your changes are formatted, typo-free, and documented correctly by running:
cargo fmt --all --check
typos
RUSTDOCFLAGS='-D warnings' cargo doc --workspace --all-features
typos
can be installed with cargo
from: https://github.com/crate-ci/typos.
After that, ensure all lints, tests, and builds are successful by running:
cargo clippy --workspace --all-features --all-targets -- -D warnings
cargo fmt --all
cargo test --all-features --workspace
cargo build --all-features --all-targets --workspace
Coding guidelines
// Comment like this.
and not//like this
- Use
TODO
instead ofFIXME
- Avoid
unsafe
- Sort imports as core, std, third-party, Cuprate crates, current crate.
- Follow the Rust API Guidelines
- Break the above rules when it makes sense