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

nordisk/edda

crates/nornir-xtask-support/Cargo.toml

[package]
name = "nornir-xtask-support"
version = "0.1.6" # RA5-35: the spawn guard reads test modules in mid-file and one-line fn bodies
edition = "2021"
# 0.1.0: first publish (2026-09-09). **The guardrail that stood here said this leaf
# is consumed ONLY by `publish = false` xtask crates and never goes to crates.io.
# That stopped being true, and the cost was measured.** `nornir-build-thing` — which
# IS published — grew `nornir-xtask-support = { path = …, optional = true }` behind
# its `wasm-stage` feature after 0.1.12 shipped, and cargo requires EVERY declared
# dependency to resolve in the index, optional or not:
#
#   error: failed to prepare local package for uploading
#   Caused by: no matching package named `nornir-xtask-support` found
#   required by package `nornir-build-thing v0.1.14`
#
# So nornir-build-thing could not be published at all. It sat at 0.1.12 on crates.io
# while the checkout stood at 0.1.14, and every consumer that named a newer version
# — gunnar's workspace asks for 0.1.13 — resolved only through a sibling checkout.
# One unpublished leaf behind an off-by-default feature made a whole published crate
# unpublishable, silently, because nothing asks the question until a release runs.
#
# Publishing it is the honest resolution: the leaf is std + `nornir-git`, both
# already public, and it carries no secret. The alternative — dropping `wasm-stage`
# — would delete working code to preserve a comment.
publish = true
description = "The ONE shared set of std-only xtask primitives for the nordisk constellation — the build-automation plumbing four repos' `cargo xtask` crates hand-rolled identically. `which` (PATH + ~/.cargo/bin, no external dep), `run` (spawn a Command, non-zero exit becomes Err), `copy_dir`/`fresh_dir`/`clear_worktree`, `short_rev` (short HEAD via the pure-gix `nornir-git` leaf, never the git CLI), `target_dir` (ASKS CARGO via `cargo metadata`, so `--target-dir`, $CARGO_TARGET_DIR and `build.target-dir` all resolve exactly as cargo resolves them), `workspace_root_of`, and the wasm bootstrap trio `ensure_wasm_target`/`ensure_wasm_bindgen`/`locked_wasm_bindgen_version` (a CLI matching Cargo.lock — the fix for the classic blank-canvas mismatch). Boxed Send+Sync error alias, so anyhow / Box<dyn Error> / Result<_,String> callers all adapt."
license = "MIT OR Apache-2.0"
repository = "https://git.gunnar.rs/nordisk/edda"
keywords = ["xtask", "wasm-bindgen", "build-automation", "ci", "std"]
categories = ["development-tools::build-utils"]
exclude = ["/.nornir/"]

[features]
default = []
# `testmatrix` — emit each pure primitive's health (target_dir's fallback honours
# the env override, copy_dir round-trips, workspace_root_of climbs one dir) into the
# nornir test-matrix via `functional_status`. OFF BY DEFAULT: a compiled-out
# no-op with no nornir dep, so a lean xtask carries neither the emitter nor
# testmatrix. Keeps the leaf std-only in the default build.
testmatrix = ["dep:nornir-testmatrix", "nornir-testmatrix/testmatrix"]

[dependencies]
# Introspection-marker emitter — only compiled with `testmatrix`. Path+version
# (like every edda leaf) so the workspace resolves the local sibling.
nornir-testmatrix = { version = "0.2.7", path = "../nornir-testmatrix", default-features = false, optional = true }
# The pure-gix git leaf — `short_rev` reads HEAD through it (LAW: every git op
# goes through nornir-git, never the `git` CLI). Path+version sibling.
nornir-git = { version = "0.2.0", path = "../nornir-git" }