xtask/Cargo.toml
[package]
name = "xtask"
version = "0.0.0"
edition = "2021"
license = "MIT OR Apache-2.0"
publish = false
description = "dwarves build automation — the `demo-wasm` / `deploy-pages` verbs that build + publish the dwarves-gui live web demo to Codeberg Pages. The gh-pages FLOW is consumed from the shared `nornir-pages` edda leaf (L5, DRY); this crate is only the dwarves-specific `PagesConfig` + the thin verb dispatcher."
# The ONE shared gh-pages demo/deploy flow (build wasm → wasm-bindgen → index.html +
# Pages meta → orphan-branch force-push). Path+version sibling dep, `publish = false`
# on both ends → zero crates.io risk. The whole ~457-LOC dwarves copy is gone.
[dependencies]
nornir-pages = { version = "0.1", path = "../../edda/crates/nornir-pages" }
# The PRODUCTION first-stage loader seam (`korp_installer::firststage`): the host-side
# view of `boot/korp-boot-efi`, the real `EFI/BOOT/BOOTX64.EFI` that chainloads
# `\vmlinuz`. `cargo xtask gen-boot-stage1` calls `build_first_stage()` rather than
# re-spawning cargo by hand, so the FAT `rustup target add x86_64-unknown-uefi`
# preflight error lives in ONE place (L5, DRY) instead of being re-invented here.
# `default-features = false` drops the znippy/OpenZL codec — the loader build needs
# only the crate's host-side seam, never the archive format.
korp-installer = { version = "0.2.0", path = "../../tunnr/crates/korp-installer", default-features = false }
# `cargo xtask build` — THE one build verb. Its whole body is
# `nornir_build_thing::suite_cli::run(repo_root, &args)`: it reads
# `.nornir/build-variants.toml` and turns `(suite, atom)` into a cargo invocation, so
# this crate contributes no variant name, no feature string and no bin name of its own.
#
# NOT `dwarves` itself. `dwarves buildthing <product>` is the forge door onto the SAME
# `suite_cli::run` — one implementation, two front-ends (L5) — but dwarves' own xtask
# cannot go through it: you would need dwarves built to build dwarves. And nornir may
# not link the forge at all (`nornir/tests/no_dwarves_edge.rs`), so the dep-light leaf
# both the forge and every member already consume is the one door that works in all
# five repos. `default-features = false` keeps the wasm plugin host out.
nornir-build-thing = { version = "0.2.0", path = "../../edda/crates/nornir-build-thing", default-features = false }
# The archive writer for `build-history`. `nornir-build-thing` deliberately links
# no znippy (a leaf's xtask must be able to pull it cheaply), so it hands the
# package over as (path, bytes) pairs and the sealing happens here — the crate
# that already resolves znippy through the workspace `[patch.crates-io]`.
znippy-common = { version = "0.10", features = ["host-decompressors"] }
anyhow = "1"
# `cargo xtask ci`: the shared plan runner, receipt and lock check (std only).
nornir-xtask-support = { version = "0.1.3", path = "../../edda/crates/nornir-xtask-support" }
# The `docs` verb renders dwarves' real `.nornir/*.md` → a typeset SVG book via
# the docs-export pipeline (markdown→typst→SVG), consumed straight from the edda
# leaf `nornir-docbook` — the pure render engine — rather than the whole nornir
# umbrella graph (nornir's `docs::export` is itself just a re-export shim over this
# leaf). OPTIONAL + behind the `docs` feature so the lean `demo-wasm` /
# `deploy-pages` verbs never pull the typst stack: only `cargo xtask-docs docs`
# compiles it.
nornir-docbook = { path = "../../edda/crates/nornir-docbook", version = "0.1.6", optional = true }
[features]
# `docs` — build the `docs` verb (the typeset-SVG-book renderer). Off by default so
# the automation crate stays lean; run via the `cargo xtask-docs` alias.
docs = ["dep:nornir-docbook"]