Release Prep
Prepare a new csv-nose release. Takes an optional version number argument.
Steps
- •
If no version number provided, ask for one
- •
Show current version from Cargo.toml
- •
Update version in Cargo.toml
- •
Update CHANGELOG.md with changes since the last release tag (use
git logto find changes)- •Follow the existing Keep a Changelog format (Performance, Changed, Fixed, Added sections)
- •Include the Full Changelog comparison link
- •
Run quality checks:
- •
cargo fmt --check - •
cargo clippy - •
cargo test
- •
- •
Run full benchmark suite (all 5 datasets) and compare results with README.md accuracy tables
- •
Run
cargo package --listto verify publish contents look correct - •
Summarize all results and flag any issues before the user publishes
- •
Create a GitHub draft release using
gh release create:- •Tag:
v{version} - •Title:
v{version} - •Use
--draftso the user can review before publishing - •Pass the CHANGELOG.md entry for this version as release notes using
--notes-file(write the entry to a temp file and delete it afterwards) or inline via--notes. For the inline approach, setVERSIONto the actual version number (e.g.0.9.0) before running:If usingbashVERSION="0.9.0" # ← replace this with the actual version --notes "$(awk "/## v$VERSION/{f=1; print; next} f && /## v[0-9]/{exit} f" CHANGELOG.md)"--notes-file, remember to delete the temp file after thegh release createcommand completes. Do NOT use--generate-notes(that pulls from PR history, not CHANGELOG). - •Before running
gh release create, ensure the tag exists and is pushed. Create an annotated tag if it doesn't exist locally, then push it:This handles three cases: tag doesn't exist (creates it), tag exists locally but not remotely (pushes it), tag exists remotely (push rejected by remote is safely ignored viacodegit tag -a v{version} -m "v{version}" 2>/dev/null || true git push origin v{version} 2>/dev/null || true|| true). This preventsghfrom creating a lightweight tag pointing to the wrong commit.
- •Tag:
- •
Do NOT run
cargo publish— leave that to the user