Developer’s guide
Build
To install from source, you’ll need to install Rust and Cargo. Follow the instructions on the Rust installation page. Then, get the source:
git clone https://github.com/langston-barrett/tree-crasher
cd tree-crasher
Finally, build everything:
cargo build --release
You can find binaries in target/release. Run tests with cargo test.
Docs
HTML documentation can be built with mdBook:
cd doc
mdbook build
Format
All code should be formatted with rustfmt. You can install rustfmt with rustup like so:
rustup component add rustfmt
and then run it like this:
cargo fmt --all
Release
-
Create branch with a name starting with
release -
Update
CHANGELOG.md -
Update the version numbers in
./crates/**/Cargo.tomlfind crates/ -type f -name "*.toml" -print0 | \ xargs -0 sed -E -i 's/^version = "U.V.W"$/version = "X.Y.Z"/' -
Run
cargo build --release -
Commit all changes and push the release branch
-
Check that CI was successful on the release branch
-
Merge the release branch to
main -
git checkout main && git pull origin && git tag -a vX.Y.Z -m vX.Y.Z && git push --tags -
Verify that the release artifacts work as intended
-
Release the pre-release created by CI
-
Check that the crates were properly uploaded to crates.io
Warnings
Certain warnings are disallowed in the CI build. This includes all rustc
warnings, as well as a subset of allowed-by-default lints.
The goal is to balance high-quality, maintainable code with not annoying
developers.
To allow a lint in one spot, use:
#![allow(unused)]
fn main() {
#[allow(name_of_lint)]
}