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
[]
= "umbral-cli"
= "The command-line tool for umbral. Library exposes `dispatch(app)` for user binaries; binary `umbral` is a global scaffolding tool (startproject / startapp)."
= true
= true
= true
= true
= true
= true
# Two artefacts:
# - lib: `umbral_cli::dispatch(app)` is what user binaries call to host the
# management subcommands (serve / migrate / makemigrations / ...).
# - bin `umbral`: the global scaffolding tool installed via
# `cargo install umbral-cli` (handles startproject / startapp).
[]
= "umbral_cli"
= "src/lib.rs"
[[]]
= "umbral"
= "src/main.rs"
[]
# Shared casing helpers (pascal_case_from_ident for scaffold).
= { = "../umbral-casing", = "0.0.4" }
= { = "../umbral", = "0.0.4" }
# umbral-cli is internal — depending on umbral-core directly is fine. We
# reach for `umbral_core::settings::get()` to read the bind_addr from
# the live settings after `App::build` published them.
= { = "../umbral-core", = "0.0.4" }
# `macros` enables `#[tokio::main]`; `rt-multi-thread` is the runtime the
# attribute expands to. No other tokio features are needed at M0.
= { = "1", = ["macros", "rt-multi-thread"] }
# `App::serve` emits a `tracing::info!` line on bind. Installing a subscriber
# here turns that into visible stdout so an operator can see the server is up.
= { = "0.3", = ["env-filter"] }
# Raw sqlx for the demo seed-data path (CREATE TABLE + INSERT before
# App::build()). umbral-cli is a framework-internal binary, so depending on
# sqlx here doesn't violate the "users only depend on the umbral facade" rule:
# umbral-cli is part of umbral, not a downstream user crate.
= { = "0.8", = ["sqlite", "runtime-tokio"] }
# `derive` so the subcommand enum picks up Parser/Subcommand impls. The
# CLI is the only place clap shows up; the facade stays free of it.
= { = "4", = ["derive"] }
# CSV parsing for the `importcsv` command (#61). Same crate the REST
# plugin uses for the `?format=csv` export, so import/export share quoting
# / escaping behaviour.
= "1"
[]
= "3"
# For the plugin-command dispatch smoke test in tests/dispatch_smoke.rs.
= "0.1"