- Installation
- Testing the Project
- Benchmarking the Project
- Running homestar on Docker
- Contributing
- Getting Help
- External Resources
- License
$ cargo install homestar
-
Run tests
cargo test --all-features
For benchmarking and measuring performance, this project leverages
criterion and a test_utils
feature flag
for integrating proptest within the the suite for working with
strategies and sampling from randomly generated values.
-
Run benchmarks
cargo bench --features test_utils
We recommend setting your Docker Engine configuration
with experimental
and buildkit
set to true
, for example:
{
"builder": {
"gc": {
"defaultKeepStorage": "20GB",
"enabled": true
}
},
"experimental": true,
"features": {
"buildkit": true
}
}
-
Build a multi-plaform Docker image via buildx:
docker buildx build --platform=linux/amd64,linux/arm64 -t homestar --progress=plain .
-
Run a Docker image (depending on your platform):
docker run --platform=linux/amd64 -t homestar
🎈 We're thankful for any feedback and help in improving our project! We have a contributing guide to help you get involved. We also adhere to our Code of Conduct.
This repository contains a Nix flake that initiates both the Rust toolchain set in rust-toolchain.toml and a pre-commit hook. It also installs helpful cargo binaries for development. Please install nix and direnv to get started.
Run nix develop
or direnv allow
to load the devShell
flake output,
according to your preference.
For formatting Rust in particular, please use cargo +nightly fmt
as it uses
specific nightly features we recommend by default.
This project recommends using pre-commit for running pre-commit hooks. Please run this before every commit and/or push.
- If you are doing interim commits locally, and for some reason if you don't
want pre-commit hooks to fire, you can run
git commit -a -m "Your message here" --no-verify
.
- We recommend leveraging cargo-watch, cargo-expand and irust for Rust development.
- We recommend using cargo-udeps for removing unused dependencies before commits and pull-requests.
This project lightly follows the Conventional Commits
convention to help explain
commit history and tie in with our release process. The full specification
can be found here. We recommend prefixing your commits with
a type of fix
, feat
, docs
, ci
, refactor
, etc..., structured like so:
<type>[optional scope]: <description>
[optional body]
[optional footer(s)]
For usage questions, usecases, or issues reach out to us in our Discord channel.
We would be happy to try to answer your question or try opening a new issue on Github.
These are references to specifications, talks and presentations, etc.
This project is licensed under the Apache License 2.0, or http://www.apache.org/licenses/LICENSE-2.0.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.