No description
- Rust 99.1%
- Just 0.9%
Cairn
Release automation tool designed specifically for Forgejo and jujutsu workflows.
Crates.io Documentation License
Table of Contents
Usage
Create a release change set by analyzing commits and generating changelog:
cairn stack
This validates your repository, detects API changes via cargo-semver-checks, bumps the version, and generates CHANGELOG.md.
When ready to publish:
cairn mark
This creates a git tag and Forgejo release with the changelog.
Installation
cargo install cairn-release
This installs the binary as cairn.
Commands
| Command | Description |
|---|---|
cairn stack |
Create release change set (version bump + changelog) |
cairn release |
Perform actual release |
cairn mark |
Create tag and release via Forgejo API |
cairn ci |
Run CI with commit hash caching |
cairn init-changelog |
Initialize CHANGELOG.md with conventional format |
Stack
Analyzes commits since the last version tag and:
- Runs cargo-semver-checks to detect API changes
- Determines version bump (major/minor/patch)
- Updates Cargo.toml version(s)
- Generates CHANGELOG.md entries
Mark
Creates a Forgejo release:
- Creates a git tag for the current version
- Pushes the tag to Forgejo
- Creates a release with the changelog
Use --force to skip validation checks.
Features
- Semantic Version Analysis: Uses cargo-semver-checks to detect API changes for accurate version bumps
- Changelog Generation: Creates formatted CHANGELOG.md with categorized entries
- Jujutsu Integration: Works with jj-managed repositories that have .git directories
- Workspace Support: Handles both single-crate and workspace projects
- Strategy Pattern Architecture: Easily replaceable components for flexibility
Requirements
- jujutsu-managed repository with
.gitdirectory - cargo-semver-checks installed
Architecture
Uses strategy pattern for all major components:
TagDiscoveryStrategy- Version tag discoveryVersionCalculationStrategy- Semantic version calculationChangelogGenerationStrategy- Changelog entry generationCargoService- Cargo.toml manipulation
Contributing
See CONTRIBUTING.md for development setup and guidelines.
License
Licensed under either of:
at your option.