use clap::{Parser, ValueEnum};
#[derive(Parser, Debug, Clone)]
#[command(
name = "nettop",
version,
about = "CLI network usage monitor by application — like NetLimiter for the terminal",
long_about = None,
after_help = "KEYS (interactive mode):\n q / Ctrl+C Quit\n r Reset cumulative counters\n s Cycle sort column\n p Pause / resume\n f Toggle filter input\n j/k or ↑/↓ Scroll\n Tab Toggle rate / cumulative view\n"
)]
pub struct Args {
#[arg(short, long, default_value_t = 1000, value_name = "MS")]
pub interval: u64,
#[arg(short = 'n', long, default_value_t = 0, value_name = "N")]
pub top: usize,
#[arg(short, long, default_value = "total-rate", value_name = "COLUMN")]
pub sort: SortBy,
#[arg(short, long, value_name = "NAME")]
pub filter: Option<String>,
#[arg(long)]
pub json: bool,
#[arg(long)]
pub no_color: bool,
#[arg(long)]
pub cumulative: bool,
#[arg(long, default_value_t = 0, value_name = "COUNT")]
pub count: usize,
}
#[derive(ValueEnum, Debug, Clone, PartialEq)]
pub enum SortBy {
Pid,
Name,
Sent,
Recv,
TotalRate,
SentTotal,
RecvTotal,
}