New `crates/maestro/` umbrella binary hosts the CLI, daemon, and registry
behind Cargo features `cli`, `daemon`, `registry` (default = all three).
Library crates keep their structure; per-binary `main.rs` files are removed
and their dispatch logic is exposed as public functions:
- `maestro_cli::dispatch(command, config, registry_url)`
- `maestro_daemon::cli::dispatch(config, cmd)` (with public `DaemonCmd`/`ConfigureArgs`)
- `maestro_registry::run()`
Subcommand surface:
- `maestro list / spawn / attach / kill / set-registry / policy` (unchanged)
- `maestro daemon [run|configure]` (was `maestrod`)
- `maestro registry` (was `maestro-registry`)
Hard cutover — old binary names are not preserved.
Verified: default-feature build, plus `--no-default-features --features {cli|daemon|registry}`
each build clean with `-D warnings`.
35 lines
930 B
TOML
35 lines
930 B
TOML
[package]
|
|
name = "maestro-cli"
|
|
version.workspace = true
|
|
edition.workspace = true
|
|
license.workspace = true
|
|
repository.workspace = true
|
|
publish.workspace = true
|
|
description = "`maestro` CLI: list, spawn, attach, kill sessions across daemons"
|
|
|
|
[lib]
|
|
path = "src/lib.rs"
|
|
|
|
[dependencies]
|
|
chrono.workspace = true
|
|
clap.workspace = true
|
|
dirs.workspace = true
|
|
futures-util.workspace = true
|
|
libc.workspace = true
|
|
maestro-config.workspace = true
|
|
maestro-protocol.workspace = true
|
|
nix.workspace = true
|
|
reqwest.workspace = true
|
|
serde.workspace = true
|
|
serde_json.workspace = true
|
|
thiserror.workspace = true
|
|
tokio = { workspace = true, features = ["macros", "rt", "sync", "time", "io-util", "io-std", "signal"] }
|
|
tokio-tungstenite = { workspace = true, features = ["rustls-tls-webpki-roots"] }
|
|
toml.workspace = true
|
|
tracing.workspace = true
|
|
tracing-subscriber.workspace = true
|
|
uuid.workspace = true
|
|
|
|
[dev-dependencies]
|
|
tempfile.workspace = true
|