53 lines
1.7 KiB
Markdown
53 lines
1.7 KiB
Markdown
# Contributing
|
|
|
|
## Development Setup
|
|
|
|
Install the Rust toolchain and the release tooling listed in `README.md`.
|
|
|
|
Useful local checks:
|
|
|
|
```bash
|
|
cargo fmt
|
|
cargo clippy --all-targets --all-features -- -D warnings
|
|
cargo test
|
|
cargo build --release
|
|
```
|
|
|
|
## Local development gates
|
|
|
|
This repo enforces formatting, linting, documentation, license headers, and
|
|
supply-chain policy. To run the same checks locally:
|
|
|
|
- One-time setup (installs the git hooks): `just setup`
|
|
(or `git config core.hooksPath .githooks`)
|
|
- Fast gate (runs automatically on commit): `just check`
|
|
— `cargo fmt --check`, `cargo clippy --all-targets --all-features -- -D warnings`, `./scripts/check-headers.sh`
|
|
- Full gate (run before pushing): `just test`, `just deny`, `just doc`
|
|
|
|
Tooling required: `rustfmt` + `clippy` (rustup components), and for the full gate
|
|
`cargo install cargo-deny`. `just` is optional — the hook and CI call `cargo` directly.
|
|
|
|
Every `.rs` file must begin with:
|
|
|
|
// SPDX-License-Identifier: MIT
|
|
// Copyright (c) 2026 James Maes
|
|
|
|
All public and private items must carry doc comments — `missing_docs` and
|
|
`clippy::missing_docs_in_private_items` are denied (they fail the build, not just CI).
|
|
|
|
## Branches
|
|
|
|
Use `feature/*` branches for pull requests into `develop`.
|
|
|
|
Release candidates stabilize on `release/*` or `rc/*` branches. Production releases are tagged from `main`.
|
|
|
|
## Pull Requests
|
|
|
|
Pull requests should include:
|
|
|
|
- A short description of the change.
|
|
- Tests for parser, filter, or value-coercion behavior when those paths change.
|
|
- Notes about Notion API behavior if the change affects API payloads.
|
|
|
|
Mutating Notion behavior should stay dry-run by default unless the user explicitly passes `--apply`.
|