use std::path::PathBuf;
use anyhow::Result;
use clap::Parser;
mod modes;
use modes::{raw::run_raw_mode, tui::run_tui_mode};
use muxox_core::config::load_config;
use muxox_web::run_web_mode;
#[derive(Debug, Parser)]
#[command(author, version, about = "Run multiple dev servers with a simple TUI.")]
struct Cli {
#[arg(short, long)]
config: Option<PathBuf>,
#[arg(long)]
raw: bool,
#[arg(long)]
tui: bool,
#[arg(short, long, default_value_t = 8772)]
port: u16,
}
#[tokio::main]
async fn main() -> Result<()> {
muxox_core::log::init();
let cli = Cli::parse();
let mode = if cli.raw {
"raw"
} else if cli.tui {
"tui"
} else {
"web"
};
muxox_core::log::debug(&format!("starting mode={mode}"));
let cfg = load_config(cli.config.as_deref())?;
if cli.raw {
run_raw_mode(cfg).await
} else if cli.tui {
run_tui_mode(cfg).await
} else {
run_web_mode(cfg, cli.port).await
}
}