Contributing to {baler}

Building

You need to know that {baler} pins its toolchain via rust-toolchain.toml, so a plain cargo build uses the right stable toolchain automatically.

cargo build --workspace
cargo test --workspace

Enable the GitHub-install path while working on it:

cargo build --workspace --features baler-core/network

Ways to contribute

This section also explains the structure where the things live.

  • Add a new CLI surface under crates/baler-cli/src/commands/. Keep it a thin wrapper that parses arguments and calls into baler-core.
  • Put the actual logic in crates/baler-core/src/ops/, which also mirrors the command name.
  • Anything that touches CRAN goes in crates/baler-core/src/cran/.
  • Archive read/write (under .tar.gz) goes in crates/baler-core/src/formats/.

This split exists so baler-core stays usable outside the CLI. Don’t reach into clap types from inside ops/.

Docs

This site is built on Quarto website rooted at docs/. Preview it locally with:

quarto preview docs

It’s rebuilt and deployed by .github/workflows/docs.yml on every push to main that touches docs/**.

Changelog

User-facing changes go in CHANGELOG.md at the repo root.