rhailib/src/monitor/cmd/main.rs
2025-06-12 05:21:52 +03:00

38 lines
1.3 KiB
Rust

// File: /Users/timurgordon/code/git.ourworld.tf/herocode/rhailib/src/monitor/cmd/main.rs
use anyhow::Result;
use clap::Parser;
// This assumes that `rhailib/src/lib.rs` will have `pub mod monitor;`
// and `rhailib/src/monitor/mod.rs` will have `pub mod cli_logic;`
// and `cli_logic.rs` will contain `pub async fn start_monitoring`.
// The `crate::` prefix refers to the `rhailib` crate root.
#[derive(Parser, Debug)]
#[clap(author, version, about = "Rhai Worker Live Monitor", long_about = None)]
struct Args {
/// Comma-separated list of worker names to monitor
#[clap(short, long, value_delimiter = ',')]
workers: Vec<String>,
}
#[tokio::main]
async fn main() -> Result<()> {
tracing_subscriber::fmt::init();
let args = Args::parse();
if args.workers.is_empty() {
eprintln!("Error: At least one worker name must be provided via --workers.");
// Consider returning an Err or using clap's built-in required attributes.
std::process::exit(1);
}
tracing::info!("Monitor CLI starting for workers: {:?}", args.workers);
// Call the monitoring logic from the `cli_logic` submodule within the `monitor` module
crate::monitor::cli_logic::start_monitoring(&args.workers).await?;
tracing::info!("Monitor CLI finished.");
Ok(())
}