xtask/Cargo.toml
# znippy-zoomies' xtask — the ONE build verb, and nothing else.
#
# ## Why this crate is SELF-ROOTING (`[workspace]` with no members)
#
# The repo root is BOTH a `[package]` (the published `znippy-zoomies` leaf) and a
# `[workspace]` over the codec crates. Adding `"xtask"` to those members would put a
# build tool inside the shipped crate's feature resolution: a cargo workspace unifies
# features across its members, so the published leaf's lock would start depending on
# what a build tool happens to pull (here: serde, sha2, chrono, nornir-hash).
#
# That trade is wrong for THIS repo specifically. znippy-zoomies is the leaf that
# both skade and znippy depend on — it was extracted into its own repo precisely to
# break a release-cascade cycle — and its lean closure is the whole reason it exists.
# An empty `[workspace]` table here makes this package its own workspace root, so it
# resolves and locks entirely separately and the root manifest is untouched.
#
# The cost is that `-p xtask` cannot see it from the repo root, which is why the
# alias in `.cargo/config.toml` uses `--manifest-path`. Same shape as modgunn's
# xtask, and the same reasoning.
[workspace]
[package]
name = "xtask"
version = "0.0.0"
edition = "2021"
publish = false
description = "znippy-zoomies' build verb: `cargo xtask build --suite ORIGINAL [--atom <name>]`, which reads .nornir/build-variants.toml and does nothing else."
[dependencies]
anyhow = "1"
# The ONE resolver. `suite_cli::run` turns (suite, atom) into a cargo invocation by
# READING `.nornir/build-variants.toml`; this crate contributes no atom name, no
# package, no feature string and no bin name of its own. That is the whole design:
# four hand-rolled build paths across the constellation gave four different answers
# to "what is this binary", and the fix is not a fifth better copy.
nornir-build-thing = { version = "0.2.0", default-features = false }
[dev-dependencies]
# `tests/build_variants.rs` — the RED-when-broken guard over the declaration. It
# lives HERE rather than in the root package's `tests/` because this crate is cheap:
# a pure-declaration check must not wait on the codec workspace (criterion, simd-json,
# sonic-rs, the bz2/zip dev fixtures) to compile first. A guard slow enough to skip
# gets skipped.
toml = "1"
# Bridge the version-dep to the LOCAL edda checkout: the registry's newest
# nornir-build-thing (0.1.3) predates the `suite_cli` / `check_bins_declared` /
# `Role::Tool` API this verb and its guard are built on. A `[patch]` is honoured only
# in a workspace ROOT manifest, and this package is its own root, so it belongs here
# rather than in znippy-zoomies'.
[patch.crates-io]
nornir-build-thing = { path = "../../edda/crates/nornir-build-thing" }