1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
[]
= "whisker-cli"
= true
= true
= true
= true
= true
= true
= true
= true
= ["development-tools", "command-line-utilities"]
= "Whisker CLI: `whisker` and `cargo-whisker` (hybrid) — scaffold, doctor, and dev-loop Whisker apps."
[[]]
= "whisker"
= "src/bin/whisker.rs"
[[]]
= "cargo-whisker"
= "src/bin/cargo_whisker.rs"
# `RUSTC_WORKSPACE_WRAPPER` target. Cargo invokes us as
# whisker-rustc-shim <rustc-path> <rustc-args...>
# and we forward the call after dumping the args to
# `$WHISKER_RUSTC_CACHE_DIR/<crate>-<timestamp>.json` for later thin
# rebuilds. Same workspace pattern clippy-driver / sccache use.
[[]]
= "whisker-rustc-shim"
= "src/bin/whisker_rustc_shim.rs"
# `-C linker=<shim>` target. rustc invokes us with the linker driver's
# argv directly (no real-linker-path prefix; we read WHISKER_REAL_LINKER
# from env to know what to forward to). Captures argv to
# `$WHISKER_LINKER_CACHE_DIR/<output>-<timestamp>.json`.
[[]]
= "whisker-linker-shim"
= "src/bin/whisker_linker_shim.rs"
[]
= { = true }
= { = "4", = ["derive"] }
= { = true }
= { = true }
# Section spinners while probing each toolchain. We deliberately avoid
# a full-screen TUI (ratatui etc.) so the doctor output remains plain
# scrollback text that AI agents and clipboard paste can read.
= "0.17"
# `whisker run` is a thin wrapper that builds a Config and calls
# DevServer::run(); the heavy deps (tokio / axum / notify / object)
# all live in whisker-dev-server.
= { = true }
= { = true, = ["rt-multi-thread", "macros"] }
# `whisker run` reads the user's `whisker.rs` via a tiny probe build
# and parses the resulting Config JSON. The dev-server does NOT
# depend on whisker-config — the cli translates the Config
# into a flat `dev_server::Config` before handing it off.
= { = true }
# Continuous Native Generation — renders gen/{android,ios}/ from the
# resolved Config before each run / build.
= { = true }
# Cargo + gradle / xcodebuild orchestration. Shared with whisker-dev-server.
= { = true }
# TOML parser for reading `[package].name` from the user crate's
# Cargo.toml. Lightweight, no async runtime.
= "0.8"
# Inline TUI for `whisker run` — anchored status bar at the bottom of
# the terminal, scrollback above for sections/steps/device logs.
= { = true }
= { = true }
# Ctrl-C handler so the TUI can restore cursor visibility before the
# process exits — without it, the shell ends up with a hidden cursor
# after `^C`. Tiny crate, no async runtime.
= "3"
# POSIX `pipe(2)` / `dup` / `dup2` / `read` for the TUI's stderr
# capture (`dup2` STDERR_FILENO over a pipe so every `eprintln!` from
# `whisker_build::ui` and child subprocesses flows into the Logs
# pane instead of corrupting the alternate-screen viewport).
= { = true }