stuffr-cli 0.6.1

The stuffr command line interface
Documentation
[package]
name = "stuffr-cli"
version.workspace = true
description = "The stuffr command line interface"
edition.workspace = true
rust-version.workspace = true
license.workspace = true
repository.workspace = true
keywords = ["compression", "archive", "cli", "unzip", "extract"]
categories = ["command-line-utilities", "compression"]
readme = "README.md"

[[bin]]
name = "stuffr"
path = "src/main.rs"

# Passthroughs to the facade, and they exist for one reason: `cargo install
# stuffr-cli --features <x>` is what the documentation tells a user to type,
# and Cargo resolves `<x>` against THIS package, not against its dependency.
# Until Phase 3b's fix wave there was no `[features]` section here at all, so
# every documented install command failed with "the package 'stuffr-cli' does
# not contain this feature" — `--features c-backed` had shipped that way since
# before `legacy` existed, printed as a copyable line in both READMEs. The only
# working spelling was `--features stuffr/legacy`, which appeared nowhere.
#
# One entry per name any document tells a user to install with: the two build
# tiers, the `legacy` bundle, `full`, and the three legacy formats the README
# names individually. `cargo install stuffr-cli` on its own still gets the
# facade's own `default = ["pure"]` — nothing here is a default, so adding a
# feature never silently changes what a plain install builds.
# `documented_install_commands_name_features_this_crate_declares` in
# `tests/cli.rs` fails the build if a README grows a `--features` spelling this
# table does not carry.
[features]
pure = ["stuffr/pure"]
c-backed = ["stuffr/c-backed"]
legacy = ["stuffr/legacy"]
full = ["stuffr/full"]
lha = ["stuffr/lha"]
arj = ["stuffr/arj"]
compress = ["stuffr/compress"]
arc = ["stuffr/arc"]
zoo = ["stuffr/zoo"]

# Note the absence of `default-features = false` here: this edge always
# requests `stuffr`'s own `default` feature set (`pure` and, since the commit
# that added `legacy` to it, `legacy` too) regardless of any
# `--no-default-features`/`--features` passed to `stuffr-cli` itself —
# `stuffr-cli` declares no `[features] default` of its own for that flag to
# disable. Verified directly: `cargo build -p stuffr-cli
# --no-default-features` (no `--features` at all) still ships `lha`, `arj`
# and `compress` in `stuffr formats`. Consequence: there is no CLI-flag-only
# way to build the `stuffr` binary without `legacy` any more — see the dead
# projection this made in `crates/stuffr-cli/tests/cli.rs`.
[dependencies]
stuffr = { path = "../stuffr", version = "0.6.1", features = ["serde"] }
clap = { workspace = true }
serde_json = "1"

[dev-dependencies]
# Fixture builders for the `list`/`test` integration tests: real tar and
# real gzip, independent of `stuffr-formats`' own `Tar`/gzip implementations,
# so a read-side bug there cannot also hide in the fixture that exercises it.
tar = { workspace = true }
flate2 = { workspace = true }