use clap::{Parser, Subcommand};
#[derive(Parser)]
#[command(author, version, about, long_about = None)]
pub struct Cli {
#[command(subcommand)]
pub command: Option<Commands>,
}
#[derive(Subcommand)]
pub enum Commands {
Api(ApiArgs),
Local(LocalArgs),
View(ViewArgs),
}
#[derive(Parser)]
pub struct ApiArgs {
#[arg(short, long, default_value_t = 9090)]
pub port: u16,
#[arg(short, long, default_value_t = 3)]
pub interval: u64,
#[arg(long)]
pub processes: bool,
#[cfg(unix)]
#[arg(short, long, num_args = 0..=1, default_missing_value = "")]
pub socket: Option<String>,
}
#[derive(Parser, Clone)]
pub struct LocalArgs {
#[arg(short, long)]
pub interval: Option<u64>,
}
#[derive(Parser, Clone)]
pub struct ViewArgs {
#[arg(long, num_args = 1..)]
pub hosts: Option<Vec<String>>,
#[arg(long)]
pub hostfile: Option<String>,
#[arg(short, long)]
pub interval: Option<u64>,
}