This file provides guidance for human and AI contributors working in this repository.
- Workspace: Rust Cargo workspace
- Crates:
cirup_core: core engine (query backend config, parsing formats, query logic)cirup_cli: command-line frontend (cirupbinary)
cirup_cli/src/main.rs: CLI argument parsing and command dispatchcirup_core/src/config.rs: configuration models and parsingcirup_core/src/file.rs: resource file loading/saving abstractioncirup_core/src/{json,restext,resx}.rs: format implementationscirup_core/src/query.rs: query engine and helper operations
Use these commands locally before committing:
cargo fmt --all --check
cargo clippy --workspace --all-targets
cargo test --workspaceIf formatting fails:
cargo fmt --all- Keep changes minimal and scoped to the task.
- Preserve existing behavior unless explicitly changing it.
- Prefer fixing root causes over suppressing lints.
- Avoid broad refactors unrelated to the current request.
- Keep code cross-platform (Linux/macOS/Windows).
- For logic changes in
cirup_core, runcargo test --workspace. - Add or update unit tests when changing parsing/query logic.
- Do not introduce flaky tests or tests that require network access.
- Workspace lint settings are defined in the root
Cargo.tomlandclippy.toml. - Formatting settings are in
rustfmt.toml. - The CI workflow enforces formatting, clippy, and tests.
- CI workflow:
.github/workflows/ci.yml - Release workflow:
.github/workflows/release.yml - Release trigger: push a
v*tag (for examplev0.1.0) - Release workflow builds and publishes artifacts for:
- Linux x64/arm64
- Windows x64/arm64
- macOS x64/arm64
Use short, imperative commit messages that describe intent, for example:
Fix resource language file filteringAdd release workflow for multi-platform artifactsReduce clippy warnings in query module