frame_host/cli.rs
1//! Command line for the full frame server.
2//!
3//! One binary, one config, one start command. The binary bakes in no bind
4//! address, no port, no asset directory, and no bus endpoint: every
5//! deployment-shaped value lives in the single `frame.toml` named here.
6
7use std::path::PathBuf;
8
9use clap::Parser;
10
11/// Parsed command line for the frame server.
12///
13/// The entire stack — the embedded liminal component and the console HTTP
14/// server — boots from one `frame.toml`. There are no side-by-side processes
15/// and no per-value flags: the config file is the sole deployment surface.
16#[derive(Debug, Parser)]
17#[command(
18 name = "frame-host",
19 version,
20 about = "Boot the full frame server: embedded bus component + console shell, from one config"
21)]
22pub struct Cli {
23 /// Path to the `frame.toml` describing the whole stack.
24 ///
25 /// It carries a `[frame]` section (console `bind`, `assets`, `auth_token`,
26 /// optional `channel`) and a `[bus]` section (the embedded bus
27 /// server's own config: `listen_address`, `health_listen_address`,
28 /// `drain_timeout_ms`, `channels`, `[bus.websocket]`, …). The pre-rename
29 /// section name `[liminal]` still parses as a deprecated alias for one
30 /// compatibility window, with a loud startup warning.
31 #[arg(long)]
32 pub config: PathBuf,
33}