krab_cli 0.4.0

The `krab` CLI: dev workflow, generators, governance, and release operations for the Krab framework
[package]

name = "krab_cli"

version.workspace = true

edition.workspace = true

rust-version.workspace = true

license.workspace = true

authors.workspace = true

repository.workspace = true

homepage.workspace = true

readme = "README.md"

documentation = "https://docs.rs/krab_cli"

description = "The `krab` CLI: dev workflow, generators, governance, and release operations for the Krab framework"

keywords = ["krab", "cli", "web", "framework", "codegen"]

categories = ["command-line-utilities", "development-tools", "web-programming"]



# The package is `krab_cli` because the crates.io name `krab` was taken in 2023

# by an unrelated crate. The *binary* is `krab`, which is how every document in

# the repository invokes it (`krab doctor`, `krab new`, `krab release certify`)

# and what `cargo install krab_cli` puts on PATH. Without this section the

# binary would inherit the package name and none of those commands would work.

[[bin]]

name = "krab"

path = "src/main.rs"



[dependencies]

clap = { version = "4.4", features = ["derive"] }

# Shell completion scripts behind `krab completions <shell>`. Maintained by the

# clap organisation, versioned in lockstep with clap itself, and published under

# the same MIT OR Apache-2.0 dual licence as the clap dependency directly above

# — both licences are already in deny.toml's allowlist, so this adds no new

# licence surface. It pulls in clap_lex/clap_builder, which clap already

# provides, so it adds no new advisory surface either. `clap_mangen` (man page

# generation) is deliberately *not* added: it is a separate crate and a separate

# dependency decision.

clap_complete = "4.4"

anyhow.workspace = true

serde_json.workspace = true

serde = { workspace = true, features = ["derive"] }

toml = "0.8"

# `auth` provides the Argon2id hashing behind `krab auth hash-password`, so the

# CLI produces credentials in exactly the format the auth service verifies.

krab_core = { workspace = true, features = ["auth"] }

# Asset fingerprint digests. SHA-256 rather than std's DefaultHasher, whose

# output is documented as unstable across Rust releases — a toolchain bump would

# otherwise rename every fingerprinted asset and bust every downstream cache for

# bytes that never changed. Already in the dependency tree via krab_core's

# migration checksums, and its licence is already in deny.toml's allowlist, so

# this adds no new licence or advisory surface.

sha2 = "0.10"



[dev-dependencies]

tempfile = "3"

serial_test = "3"