Repository navigation
Expand file tree
/
Copy pathCargo.toml
More file actions
146 lines (138 loc) · 6.46 KB
/
Copy pathCargo.toml
File metadata and controls
146 lines (138 loc) · 6.46 KB
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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
[package]
name = "minimal"
description = "The min CLI: sessions, tasks, loadouts, packages, networking, diagnostics, project setup, and the min dash session-manager TUI, over SSH to minimald, auto-spawning minvmd where the daemon lives in a microVM."
rust-version.workspace = true
version.workspace = true
edition.workspace = true
publish.workspace = true
license.workspace = true
# The user-facing command is `min` — clap has said so since the CLI was named
# (`#[command(name = "min")]`), and the installer lays the binary down as
# `bin/min`. Name the binary target to match so the dev build agrees with what
# ships, instead of leaving `min` to be conjured by a rename at release time.
# Declaring a [[bin]] disables autodiscovery, so `src/main.rs` is now built
# ONLY as `min`; the `minimal` lib target is unaffected.
[[bin]]
name = "min"
path = "src/main.rs"
[features]
# Off by default: gates the `mesh` CLI subcommand. WireGuard mesh (UC7 / UC2b-A)
# is deferred for now; the daemon-side `direct-tcpip` handler needs no feature
# and is served in every build.
remote-access = []
[dependencies]
anyhow.workspace = true
async-compression.workspace = true
async-tar.workspace = true
clap.workspace = true
# `unstable-dynamic` buys the completion engine behind `min`'s runtime session
# completion. Three files depend on it:
#
# completion.rs `ArgValueCompleter` / `CompletionCandidate` — per-argument
# candidates computed by the binary itself.
# main.rs `CompleteEnv` — the entrypoint hook a completing shell
# re-enters the binary through.
# lib.rs `env::Shells` + `EnvCompleter::write_registration` — how
# `min completions <shell>` renders the registration shim.
#
# Unstable in the semver sense: exempt from clap_complete's stability guarantee
# and free to change under a minor bump. Those are the call sites to check when
# it does.
clap_complete = { workspace = true, features = ["unstable-dynamic"] }
camino.workspace = true
chrono.workspace = true
diagnostics.workspace = true
dirs.workspace = true
hex.workspace = true
# The CLI's own answerer-liveness query on a VM-backed host (NET-138): one A
# query for the host's row at the reported port, in the same wire codec the
# VM host daemon's answerer answers with, so the two agree by construction.
# Workspace-declared with `std` only — no runtime feature, the codec is
# enough; the datagram is this crate's own UdpSocket.
hickory-proto.workspace = true
# `signal`: `min net forward` dies of the SIGTERM it caught (cmd::die_of).
nix = { workspace = true, features = ["signal"] }
mctx.workspace = true
mfile.workspace = true
minimal-client.workspace = true
minimald-rpc.workspace = true
mlog.workspace = true
op.workspace = true
paths.workspace = true
# `min diag upload` hands a bundle to the diag portal: two requests, HTTPS.
reqwest.workspace = true
russh.workspace = true
serde.workspace = true
serde_json_lenient.workspace = true
sha2.workspace = true
# The GitHub sign-in item `min auth` writes and reads (`bep::signin`), and
# the GitHub module's host set, which activation checks a grant box's egress
# against.
bep = { path = "../bep" }
# A GitHub grant's sign-in reference (`mint.rs`): the client's handle-signing
# key, the handle id, and the key's encoding on the proxy's control socket.
base64.workspace = true
getrandom.workspace = true
p256.workspace = true
boxes.workspace = true
# The reserved local range the resolver advisory's bind probe reads. Owned by
# the zero-dependency `switch` crate — the same constant the daemon's DNS zone
# re-exports and publishes per-box addresses from — so the CLI's probe and the
# daemon's publish agree by construction instead of drifting between two
# copies of the /24. Not the daemon crate: the CLI keeps depending on none.
switch.workspace = true
# Staging for the `min bug` volume fallback: `debugfs -c` rdumps the guest's
# /logs into a temp dir before the readable files are tail-capped into the
# bundle.
tempfile.workspace = true
tokio.workspace = true
# Iterating `async_tar::Archive::entries()` (a `Stream`) for the bounded
# streaming verification of a nested guest bundle.
tokio-stream.workspace = true
toml.workspace = true
toml_edit.workspace = true
tracing.workspace = true
tracing-subscriber.workspace = true
# Parsing the diag portal's endpoint to check its scheme before an
# upload or delete puts a bundle or delete token on the wire.
url.workspace = true
version.workspace = true
# Wipes the raw token reply `min auth login` reads from GitHub.
zeroize.workspace = true
# default-features = false drops minvmd's `libkrun` feature: the CLI only uses
# the client helpers (sock/lifecycle) and calls no krun code, so it must not
# inherit libkrun's `#[link]` load command (would make it unloadable without
# libkrun).
minvmd = { path = "../minvmd", default-features = false }
ot.workspace = true
inquire.workspace = true
# ── `min dash` dashboard (`minimal::dash`) ─────────────────────────────────
# Only the interactive dashboard links a terminal UI, so these sit apart from
# the CLI's own dependencies. `common` (fuzzy filter) and `futures` (driving
# crossterm's EventStream) are used nowhere outside the dash module.
common.workspace = true
crossterm.workspace = true
futures.workspace = true
ratatui.workspace = true
unicode-width.workspace = true
[dev-dependencies]
# `insta` for the `dash_snapshots` render snapshots; `term` for the pty that
# stands in for the user's terminal in the attach tests.
insta.workspace = true
nix = { workspace = true, features = ["term"] }
minvmd = { path = "../minvmd", default-features = false, features = ["test-support"] }
# The property test that no output mode writes a secret's value (BCLI-063).
proptest.workspace = true
# `test-util` (not in tokio's `full`) for `#[tokio::test(start_paused = true)]`:
# lets the client's handshake-deadline test elapse in virtual time.
tokio = { workspace = true, features = ["test-util"] }
# `minimald`'s sandbox stack (`hakoniwa` → `libcgroups` → `procfs`) is
# Linux-only, so a plain dev-dependency makes `cargo test -p minimal` fail to
# build on macOS — the daemon joins the graph for every test target, even the
# ones that never touch it. Gate it to Linux so the lib and the daemon-free
# targets (notably `dash_snapshots`) build there; Linux dev-dep inheritance is
# unchanged.
[target.'cfg(target_os = "linux")'.dev-dependencies]
minimald = { path = "../minimald", features = ["test-support"] }
[lints]
workspace = true