use clap::{Parser, Subcommand, Args};
use clap_complete::Shell;
#[derive(Parser)]
#[command(name = "nom", version, about = "Nomad headless browser CLI")]
pub struct Cli {
#[arg(long, value_enum)]
pub completions: Option<Shell>,
#[command(subcommand)]
pub command: Option<Command>,
}
#[derive(Subcommand)]
pub enum Command {
Browse(BrowseArgs),
Daemon(DaemonArgs),
Health(HealthArgs),
Format(FormatArgs),
}
#[derive(Args)]
pub struct BrowseArgs {
pub url: String,
#[arg(short, long, default_value = "summary")]
pub format: String,
#[arg(short, long)]
pub output: Option<String>,
#[arg(long, default_value = "8000")]
pub port: u16,
#[arg(long)]
pub oneshot: bool,
#[arg(long)]
pub js_timeout: Option<u32>,
}
#[derive(Args)]
pub struct DaemonArgs {
#[command(subcommand)]
pub action: DaemonAction,
}
#[derive(Subcommand)]
pub enum DaemonAction {
Start {
#[arg(long, default_value = "8000")]
port: u16,
#[arg(long, default_value = "1")]
cache_cap: usize,
#[arg(long, default_value = "2")]
parse_concurrency: usize,
},
Stop,
Status,
Restart {
#[arg(long, default_value = "8000")]
port: u16,
},
}
#[derive(Args)]
pub struct HealthArgs {
#[arg(long, default_value = "8000")]
pub port: u16,
#[arg(long)]
pub json: bool,
}
#[derive(Args)]
pub struct FormatArgs {
pub format: Option<String>,
}