git-atomic 0.1.3

Split multi-component commits into isolated per-component branches
Documentation
# git-atomic justfile
# Run `just --list` for available recipes

set shell := ["bash", "-cu"]

# Default recipe
default:
    @just --list

# =============================================================================
# Development
# =============================================================================

# Install dependencies and verify toolchain
[group('dev')]
setup:
    rustup show
    cargo fetch

# Quick compile check (no codegen)
[group('dev')]
check:
    cargo check --all-targets

# Build debug binary
[group('dev')]
build:
    cargo build

# Build optimized release binary
[group('dev')]
build-release:
    cargo build --release

# Format code
[group('dev')]
fmt:
    cargo fmt

# Format check (CI-friendly)
[group('dev')]
fmt-check:
    cargo fmt -- --check

# =============================================================================
# Testing
# =============================================================================

# Run all tests
[group('test')]
test:
    cargo test

# Run tests with output
[group('test')]
test-verbose:
    cargo test -- --nocapture

# Run specific test
[group('test')]
test-one name:
    cargo test {{name}} -- --nocapture

# =============================================================================
# Linting
# =============================================================================

# Run clippy
[group('lint')]
clippy:
    cargo clippy --all-targets -- -D warnings

# Run all lints (clippy + fmt check)
[group('lint')]
lint: clippy fmt-check

# =============================================================================
# Documentation
# =============================================================================

# Build and open rustdoc
[group('docs')]
docs:
    cargo doc --open --no-deps

# Build mdBook documentation
[group('docs')]
docs-build:
    mdbook build docs

# Serve mdBook locally
[group('docs')]
docs-serve:
    mdbook serve docs --open

# =============================================================================
# Docker
# =============================================================================

# Build Docker image
[group('docker')]
docker-build:
    docker build -t git-atomic:dev -f docker/Dockerfile .

# Run in Docker container
[group('docker')]
docker-run *args:
    docker run --rm -v "$(pwd):/workspace" -w /workspace git-atomic:dev {{args}}

# =============================================================================
# Release
# =============================================================================

# Generate changelog (dry-run)
[group('release')]
changelog-preview:
    git cliff --unreleased

# Full CI check (what CI runs)
[group('release')]
ci: lint test build

# =============================================================================
# Utilities
# =============================================================================

# Clean build artifacts
[group('util')]
clean:
    cargo clean

[group('util')]
# Update dependencies
update:
    cargo update

[group('util')]
[macos]
# Install dependencies
install:
    cargo install tdd-guard-rust
    brew bundle install .claude/reference/Brewfile
    mdbook-mermaid install docs/
    # mdbook-pagetoc install docs/
    # mdbook-svgbob install docs/
    # mdbook-cmdrun install docs/
    # mdbook-admonish install docs/
    # mdbook-linkcheck install docs/

# Show outdated dependencies
[group('util')]
outdated:
    cargo outdated -R

[group('user')]
notes:
    ekphos "{{ justfile_directory() }}/docs" || error("ekphos not installed -> run 'just install'")

# jira-sync:
#     curl https://github.com/steveyegge/beads/raw/main/examples/jira-import/jira2jsonl.py
#     curl https://github.com/steveyegge/beads/raw/main/examples/jira-import/jsonl2jira.py