xtask/Cargo.toml
[package]
name = "xtask"
version.workspace = true
license = "AGPL-3.0-only"
edition = "2021"
publish = false
description = "holger-ui's deploy verbs in Rust: `publish` (release build + per-release CSP + restart) and `verify-chain` (the prod chain, outside-in). Replaces deploy/publish.sh and deploy/verify-chain.sh."
[dependencies]
# `cargo xtask ci`: the shared plan runner, receipt and lock check (std + nornir-git).
# 0.1.4 (Step::timeout, lockfollow), which crates.io does not serve yet: it comes from the
# edda sibling through .cargo/estate-siblings.toml (switched on by copying it to
# .cargo/siblings.toml). A lone clone cannot build xtask until 0.1.4 is published.
nornir-xtask-support = "0.1.4"
# **The build declaration** — ONE entry, not two: `holger-ui-recipe` re-exports
# `nornir_build_thing`, which is the seam `src/build.rs` is written against, so the
# xtask and the recipe cannot resolve to different versions of the declaration
# types. It is what makes `cargo xtask build` able to carry no package name, no
# feature string and no triple of its own.
#
# `features = ["cargo-container"]` is NOT a second dependency: it is this ONE
# dependency asked for its execution leg. The recipe forwards it to
# `nornir-build-thing/cargo-container`, which is `DraupnirCargoRunner` — the
# thing that starts the pinned toolchain container the `mvp-ui` row compiles in.
# It is opt-in there because the recipe must also build for wasm32 (the forge
# loads `holger-ui-build-thing`, a wasm32 cdylib over it) and draupnir does not.
holger-ui-recipe = { version = "3.0.0", path = "../crates/holger-ui-recipe", features = ["cargo-container"] }
anyhow = "1"
# The CSP names trunk's inline bootstrap by its sha256, base64-encoded.
# 0.10 -> 0.11 (2026-10-03, finish-bump); `kat_bootstrap_hash_is_byte_identical` pins the token.
sha2 = "0.11"
base64 = "0.23"
# HTTPS checks against the tailnet URL (rustls, no OpenSSL, no curl).
ureq = "3"
# systemd --user: RestartUnit / ActiveState over D-Bus, no systemctl.
zbus = { version = "5", default-features = false, features = ["blocking-api", "async-io"] }