use crate::config;
use clap::{Args, Parser};
#[derive(Parser, Debug)]
#[command(version, about, long_about = Some("ProcX is a simple TUI tool for searching and killing processes in interactive way."))]
pub struct CliArgs {
#[clap(
default_value = "",
help = r#"Query string for searching processes.
You may use special prefix for different kind of search:
- :<port> - search by port, i.e ':8080'
- /<path> - search by command path, i.e. '/home/user/bin'
- -<arg> - search by argument, i.e. '-i'
If no prefix is given search will be done by process name"#
)]
pub query: String,
#[arg(short = 't', long, default_value_t = false)]
pub include_threads_processes: bool,
#[arg(short = 'a', long, default_value_t = false)]
pub include_other_users_processes: bool,
#[command(flatten)]
pub screen_size: Option<ScreenSizeOptions>,
}
#[derive(Args, Debug, Clone, Copy)]
#[group(required = false, multiple = false)]
pub struct ScreenSizeOptions {
#[arg(short = 'F', long, default_value_t = false)]
pub fullscreen: bool,
#[arg(short = 'H', long, default_value_t = config::DEFAULT_SCREEN_SIZE)]
pub height: u16,
}