Your browser sucks, JavaScript disabled! Gunnar's console needs JavaScript and WebAssembly. Git over SSH on port 2222 does not.

nordisk/nornir

crates/nornir-build-thing/Cargo.toml

# nornir's **build thing** — the recipe, as a crate. CODE IS THE SOURCE.
#
# The 2026-08-27 law (dwarves/.nornir/build-thing-code-is-source-design.md): a
# build thing IS the Rust `impl BuildThing`, and `.nornir/build-variants.toml` is
# EMITTED from it — a description of the build, regenerated by
# `nornir-build-thing emit`, never edited by hand and never read back as
# authority. nornir was the LAST of the sixteen with no code recipe at all: its
# 495-line hand-written toml was the whole declaration, and a hand-written
# declaration is one nothing can check.
#
# ── THE NAME COLLISION, AND WHY IT IS NOT AVOIDED ────────────────────────────
#
# dwarves' forge looks for a package named `<repo>-build-thing` under `crates/`
# or the repo root and REFUSES anything else by name
# (`dwarves::build_thing::code::recipe_crate`). For this repo that name is
# `nornir-build-thing` — which is ALSO the name of the evaluator in edda that
# every recipe in the constellation depends on. Two distinct packages, one
# spelling. Renaming this crate to dodge it would make nornir the one repo the
# forge cannot find the code road for, which is the defect this crate exists to
# close; renaming edda's evaluator would touch fifteen consumers. So the
# collision is carried HERE, in the one place it costs nothing: the dependency
# is taken under the local alias `nbt`, cargo's `package =` rename. `use
# nbt::…` throughout, and `nornir-build-thing` means this repo's recipe when
# spoken inside this repo — exactly as `korp-build-thing` does inside korp.
[package]
name = "nornir-build-thing"
version = "0.1.0"
edition = "2021"
rust-version = "1.85"
license = "MIT OR Apache-2.0"
repository = "https://git.gunnar.rs/nordisk/nornir"
description = "nornir's build thing: the five suite atoms (server, client, cli, ui, solo) as typed Rust; .nornir/build-variants.toml is emitted from it."
# Path-deps edda's evaluator, which is edited in the same afternoon as the
# recipes that read it, so this crate is not published from here.
publish = false

[lib]
# `cdylib` is the wasm32 module the forge loads (a recipe crate that is not a
# cdylib is REFUSED BY NAME by dwarves `build_thing::code`); `rlib` is the
# native library the tests and the emit bin link. One source, no `cfg` fork.
crate-type = ["cdylib", "rlib"]

[[bin]]
# The emit door: `nornir-build-thing emit` regenerates
# .nornir/build-variants.toml from `variants()`; `--list` prints the roster;
# `toml` prints the emission.
name = "nornir-build-thing"
path = "src/main.rs"

[dependencies]
# The contract, the declaration types, the `plugin::BuildThing` trait and the ONE
# `code → toml` emitter. Aliased `nbt` — see the collision note above.
nbt = { package = "nornir-build-thing", path = "../../../edda/crates/nornir-build-thing", version = "0.2.0", default-features = false }
anyhow = "1"

[dev-dependencies]
nbt = { package = "nornir-build-thing", path = "../../../edda/crates/nornir-build-thing", version = "0.2.0", default-features = false }
# The manifest reader of tests/declaration_guard.rs (the transitive sibling walk).
toml = "1"

[build-dependencies]
# The recipe's own content hash over its sources (`build.rs`): a receipt names
# the recipe by `krate:version:hash`.
sha2 = "0.11"