use clap::{
ArgAction, Parser,
builder::styling::{AnsiColor, Effects, Styles},
};
fn help_styles() -> Styles {
Styles::styled()
.header(AnsiColor::BrightBlue.on_default().effects(Effects::BOLD))
.usage(AnsiColor::BrightBlue.on_default().effects(Effects::BOLD))
.literal(AnsiColor::BrightCyan.on_default().effects(Effects::BOLD))
.placeholder(AnsiColor::BrightGreen.on_default())
.valid(AnsiColor::BrightGreen.on_default())
.invalid(AnsiColor::BrightRed.on_default().effects(Effects::BOLD))
.error(AnsiColor::BrightRed.on_default().effects(Effects::BOLD))
}
#[derive(Debug, Parser)]
#[command(
name = "fuckport",
version,
about = "Kill processes by PID, name, or port.",
styles = help_styles(),
after_help = "Examples:\n fuckport 1337\n fuckport safari\n fuckport :8080\n fuckport 1337 safari :8080\n fuckport"
)]
pub struct Cli {
#[arg(value_name = "TARGET")]
pub targets: Vec<String>,
#[arg(short, long, action = ArgAction::SetTrue)]
pub force: bool,
#[arg(short = 'c', long, action = ArgAction::SetTrue)]
pub case_sensitive: bool,
#[arg(short, long, action = ArgAction::SetTrue)]
pub silent: bool,
#[arg(short, long, action = ArgAction::SetTrue)]
pub verbose: bool,
#[arg(short, long, action = ArgAction::SetTrue)]
pub interactive: bool,
#[arg(long, default_value_t = 1500, visible_alias = "wait-ms")]
pub force_after_timeout: u64,
#[arg(long, default_value_t = 5000)]
pub wait_for_exit: u64,
}