forkctl 0.0.19

Control audited StGit downstream patch stacks
min_version = "2026.7.7"

[settings]
lockfile = true

[tools]
rust = "1.97.1"
"cargo:stgit" = { version = "2.6.1", depends = ["rust"] }
"cargo:cargo-nextest" = { version = "0.9.143", depends = ["rust"] }
lefthook = "2.1.10"
usage = "4.1.0"
gh = "2.95.0"
# Test-only: the declared-check lifecycle test exercises a real ast-grep command. Consumers
# name their own tools in their own mise.toml; forkctl ships no check tooling.
ast-grep = "0.45.0"

[tasks."format:fix"]
description = "Format Rust sources"
run = "cargo fmt --all"

[tasks.format]
description = "Check Rust formatting"
run = "cargo fmt --all -- --check"

[tasks."lint:fix"]
description = "Apply machine-fixable Clippy suggestions"
run = "cargo clippy --fix --allow-dirty --allow-staged --workspace --all-targets --all-features -- -D warnings"

[tasks.lint]
description = "Run Clippy with warnings denied"
run = "cargo clippy --workspace --all-targets --all-features -- -D warnings"

[tasks.test]
description = "Run the parallel test suite"
run = "cargo test --workspace --all-features"

[tasks."test:isolated"]
description = "Run each test in an isolated process with nextest"
run = "cargo nextest run --workspace --all-features"

[tasks."version:sync"]
description = "Regenerate the lockfile and all version pins from mise.toml and Cargo.toml"
run = ["mise lock", "cargo run --quiet --package forkctl-xtask"]

[tasks."version:check"]
description = "Verify generated pins match mise.toml and Cargo.toml"
run = "cargo run --quiet --package forkctl-xtask -- --check"

[tasks.verify]
description = "Run all repository checks"
depends = ["format", "lint", "test", "version:check"]

[tasks.build]
description = "Build the release binary"
run = "cargo build --release"