# gunnar-ui's **recipe** — the one Rust declaration of this repository's build space.
#
# ## Why a plain rlib beside `gunnar-ui-build-thing`
#
# dwarves' code road refuses a package named `<repo>-build-thing` whose `[lib]
# crate-type` does not contain `cdylib` (a wasm32 build of an rlib emits no
# `.wasm`). And a lib whose crate-type contains `cdylib` gets NO
# `--extra-filename` from cargo, so two units of it — the lib's own resolution
# and a consumer's, which differ as soon as any dev-dependency turns a feature
# on — write the same `deps/lib<name>.rlib` and one link picks the loser
# (cargo#6313; measured in gunnar 2026-09-03 and again in holger 2026-09-16 as
# `error[E0460]: found possibly newer version of crate …`).
#
# `xtask` depends on the declaration (see `xtask/Cargo.toml`), so the
# declaration must live in a crate that is safe to depend on. That is this one.
# NOTHING depends on `gunnar-ui-build-thing`.
#
# ## `nornir-build-thing` FROM THE REGISTRY, never a sibling path
#
# holger and gunnar spell this dependency `{ version = "0.1.18", path =
# "../../edda/crates/nornir-build-thing" }`. This repository may not: its own
# rule, recorded in `crates/gunnar-ui-server/Cargo.toml` and enforced by
# `xtask publish`'s `cargo metadata` step, is that `git clone <gunnar-ui> &&
# cargo build` must succeed with NO sibling checkouts. A path dependency
# escaping the repository is read at RESOLVE time, so it would make an edda
# checkout a hard requirement of `cargo metadata` on this whole workspace —
# exactly the blocker that made `gunnar-forge` a published crate in 2026-09-10.
[package]
name = "gunnar-ui-recipe"
description = "gunnar-ui's build recipe as code: every build point of the console's two halves declared in Rust through nornir-build-thing, and the emitter of .nornir/build-variants.toml (code -> toml, one-directional). gunnar-ui-build-thing is its wasm32 cdylib shim."
version.workspace = true
edition.workspace = true
rust-version.workspace = true
license.workspace = true
repository.workspace = true
authors.workspace = true
publish.workspace = true
[lib]
name = "gunnar_ui_recipe"
[dependencies]
# The declaration types (`BuildVariant`, `BuildVariantSet`), the
# `plugin::BuildThing` trait and the ONE emitter (`emit::emitted_toml`, which
# round-trips through the one loader). No features: the recipe declares and
# computes nothing, and must build for wasm32.
nornir-build-thing = { version = "0.2.0", default-features = false }
anyhow = "1"
[lints.rust]
unsafe_code = "forbid"