rigger 0.20.0

One seat for all your projects and tasks: a local record of what is done, what is next and when it ships - read by you and your coding assistant
[package]
name = "rigger"
version = "0.20.0"
edition = "2024"
rust-version = "1.88"
description = "One seat for all your projects and tasks: a local record of what is done, what is next and when it ships - read by you and your coding assistant"
license = "MIT"
repository = "https://github.com/lacodda/rigger"
homepage = "https://github.com/lacodda/rigger"
readme = "README.md"
keywords = ["cli", "developer-tools", "project-management", "mcp", "release"]
categories = ["command-line-utilities", "development-tools"]
authors = ["Kirill Lakhtachev <lahtachev@gmail.com>"]
# assets/icon.ico is required by build.rs on Windows; the rest of the brand
# artwork only serves GitHub and the docs site.
exclude = [
    "docs/",
    ".github/",
    "cliff.toml",
    "rustfmt.toml",
    "assets/social-preview.png",
    "assets/logo-512.png",
    "assets/apple-touch-icon.png",
    "assets/favicon-32.png",
]

# There is deliberately no second `[[bin]]` for the `rgr` alias. Shipping it as
# its own binary would put two identical multi-megabyte executables in every
# archive and every download, to give one program a second name. The installers
# create `rgr` as a link instead - a hard link on Windows, a symlink elsewhere -
# so one set of bytes answers to both names and neither can go stale. The npm
# wrapper points both of its `bin` entries at the same launcher. See tools/install.*

[target.'cfg(windows)'.build-dependencies]
winresource = "0.1"

[dependencies]
anyhow = "1"
clap = { version = "4.5", features = ["derive"] }
directories = "6"
dunce = "1"
gix = { version = "0.87.1", default-features = false, features = ["max-performance-safe", "sha1", "basic", "revision"] }
jiff = "0.2"
# bundled: no system SQLite to find or version-match on any platform.
# backup: the database is copied through SQLite's own API before a migration,
# which is consistent even while another process holds it open.
rusqlite = { version = "0.40", features = ["bundled", "backup"] }
serde = { version = "1", features = ["derive"] }
serde_json = "1"
# The profile config is a file a person edits, so it is TOML rather than JSON.
toml = "1"

[dev-dependencies]
assert_cmd = "2"
# The tests age a backup by writing the moment into its name, which is where
# the product reads it from - so they need the same clock the product uses.
jiff = "0.2"
# The document tests read a document back as JSON to check what an edit
# kept and what it replaced.
serde_json = "1"
# The integration tests open the database directly to set up a state the
# CLI cannot make on its own - a schema an edited migration left short.
rusqlite = { version = "0.40", features = ["bundled"] }
predicates = "3"
tempfile = "3"

# Line-table debug info keeps backtraces readable while cutting the .pdb weight
# that dominates target/debug. Full debug info is a one-line revert when needed.
[profile.dev]
debug = 1