git-queue 0.1.3

Manage queues of dependent branches and their numbered pull requests
Documentation
[package]
name = "git-queue"
version = "0.1.3"
edition = "2021"
description = "Manage queues of dependent branches and their numbered pull requests"
license = "MIT"
repository = "https://github.com/freshtonic/git-queue"
homepage = "https://freshtonic.github.io/git-queue/"
readme = "README.md"
keywords = ["git", "pull-request", "stacked-diffs", "rebase", "github"]
categories = ["command-line-utilities", "development-tools"]
# Ship only what's needed to build and document the crate — keep the marketing
# site (index.html, fonts/) and internal docs out of the crates.io package.
include = ["src/**/*", "skills", "README.md", "LICENSE", "CHANGELOG.md"]

# One binary, `git-queue`, is built from a thin wrapper in src/bin/ around the
# library's `run()`, so `git queue ...` dispatches to it via git's standard
# subcommand mechanism. `git queue setup` can add a `git q` alias to the user's
# global git config for a shorter form.

[dependencies]
anyhow = "1"
clap = { version = "4", features = ["derive"] }
clap_complete = "4"
clap_mangen = "0.2"
# Cross-platform OS entropy for minting Stable-Commit-Ids (a thin wrapper over
# each platform's RNG — getrandom syscall / BCryptGenRandom — no C deps).
getrandom = "0.3"
# The interactive `git queue tui` editor (ADR-0001). By far the project's
# largest dependency; the domain logic lives in the headless `engine`, so the
# TUI stack is confined to the thin `view` shell. crossterm is re-exported via
# `ratatui::crossterm`, so its version stays locked to ratatui's.
ratatui = "0.29"
serde = { version = "1", features = ["derive"] }
serde_json = "1"

[dev-dependencies]
assert_cmd = "2"
tempfile = "3"

[lints.rust]
unsafe_code = "forbid"          # this crate has no unsafe (it shells out to git)
missing_debug_implementations = "warn"
unreachable_pub = "warn"
rust_2018_idioms = { level = "warn", priority = -1 }

[lints.clippy]
# Lint groups (priority -1 so individual overrides below win)
all = { level = "warn", priority = -1 }
pedantic = { level = "warn", priority = -1 }
nursery = { level = "warn", priority = -1 }

# Pedantic/nursery lints that are more noise than signal
module_name_repetitions = "allow"
must_use_candidate = "allow"
missing_errors_doc = "allow"     # binary crate — you're not publishing an API
missing_panics_doc = "allow"
future_not_send = "allow"        # noisy if you use tokio spawn_local / !Send futures
option_if_let_else = "allow"     # nursery; often reduces readability
# Index/coordinate math for the ratatui TUI casts freely between usize/u16/isize;
# truncation/wrap/sign there is intended, not a bug.
cast_possible_truncation = "allow"
cast_possible_wrap = "allow"
cast_sign_loss = "allow"
struct_excessive_bools = "allow"   # the TUI `App` is legitimately a bag of flags
too_many_lines = "allow"           # render/dispatch/setup fns are inherently long
assigning_clones = "allow"         # nursery; `clone_from` hurts readability here
items_after_statements = "allow"   # defining a helper next to its use is fine
format_push_string = "allow"       # the `write!` alternative fights unwrap_used
unnecessary_wraps = "allow"        # command / key-handler fns share a uniform
                                   # `-> Result<()>` for uniform dispatch
needless_pass_by_value = "allow"   # churn > value for internal helpers, and it
                                   # false-positives on consumed/owned args
# `unreachable_pub` (rust) wants internal items to be `pub(crate)`; nursery's
# `redundant_pub_crate` then calls that redundant. They contradict — keep the
# former (it documents the real API surface) and silence the latter.
redundant_pub_crate = "allow"

# Deny the footguns
unwrap_used = "warn"             # consider "deny" once the codebase is clean
expect_used = "warn"
dbg_macro = "warn"
todo = "warn"
print_stdout = "allow"           # it's a binary — printing is the point
                                 # (set "warn" if all output goes via a logger/tracing)

# generated by 'cargo dist init'
[profile.dist]
inherits = "release"
debug = true
split-debuginfo = "packed"