1
0
Fork
You've already forked cairn
0
No description
  • Rust 99.1%
  • Just 0.9%
2026年06月19日 18:24:44 +00:00
.crow ci: add cargo audit step to CI and justfile 2026年06月15日 07:42:02 +00:00
proptest-regressions refactor: extract format_changelog_section from write_changelog 2026年06月07日 07:47:21 +00:00
src refactor: replace std::fs with crate::fs module 2026年06月19日 18:24:44 +00:00
tests refactor(validation): remove dead code for Forgejo env validation 2026年05月06日 08:45:55 +00:00
.gitignore chore: bump version to 0.6.3 2026年01月21日 07:57:56 +00:00
cairn.toml chore: bump version to 0.3.1 2026年01月06日 20:47:13 +00:00
Cargo.lock ci: add cargo audit step to CI and justfile 2026年06月15日 07:42:02 +00:00
Cargo.toml chore: bump version to 4.0.0 2026年06月07日 07:47:21 +00:00
CHANGELOG.md chore: bump version to 4.0.0 2026年06月07日 07:47:21 +00:00
CONTRIBUTING.md chore(publish): prepare crate for crates.io publishing 2026年05月05日 21:29:59 +00:00
justfile ci: use fmt auto-fix instead of check-only in CI 2026年06月19日 18:23:52 +00:00
LICENSE-APACHE chore(publish): prepare crate for crates.io publishing 2026年05月05日 21:29:59 +00:00
LICENSE-MIT chore(publish): prepare crate for crates.io publishing 2026年05月05日 21:29:59 +00:00
README.md chore(publish): prepare crate for crates.io publishing 2026年05月05日 21:29:59 +00:00
rustfmt.toml feat: implement complete cairn release automation with workspace support 2025年12月28日 08:37:22 +00:00

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:

  1. Runs cargo-semver-checks to detect API changes
  2. Determines version bump (major/minor/patch)
  3. Updates Cargo.toml version(s)
  4. Generates CHANGELOG.md entries

Mark

Creates a Forgejo release:

  1. Creates a git tag for the current version
  2. Pushes the tag to Forgejo
  3. 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

Architecture

Uses strategy pattern for all major components:

  • TagDiscoveryStrategy - Version tag discovery
  • VersionCalculationStrategy - Semantic version calculation
  • ChangelogGenerationStrategy - Changelog entry generation
  • CargoService - Cargo.toml manipulation

Contributing

See CONTRIBUTING.md for development setup and guidelines.

License

Licensed under either of:

at your option.