use clap::{Parser, Subcommand, ValueEnum};
#[derive(Parser, Debug)]
#[command(name = "sysinfo-cli")]
#[command(about = "A useful CLI wrapper around the sysinfo crate", long_about = None)]
pub struct Cli {
#[command(subcommand)]
pub command: Option<Commands>,
#[arg(short, long, global = true)]
pub json: bool,
#[arg(short, long, global = true)]
pub watch: Option<u64>,
#[arg(short, long, global = true)]
pub output: Option<String>,
}
#[derive(Subcommand, Debug, Clone, PartialEq)]
pub enum Commands {
System,
Cpu,
Memory,
Disks,
Network,
Components,
Processes {
#[arg(short, long)]
filter: Option<String>,
#[arg(short, long)]
limit: Option<usize>,
#[arg(short, long, value_enum, default_value_t = SortBy::Cpu)]
sort: SortBy,
},
}
#[derive(Copy, Clone, Debug, PartialEq, Eq, PartialOrd, Ord, ValueEnum)]
pub enum SortBy {
Cpu,
Memory,
Pid,
Name,
}