use clap::{Parser, Subcommand};
use std::path::PathBuf;
#[derive(Parser)]
#[command(name = "ziro")]
#[command(about = "Cross-platform port and process management tool", long_about = None)]
#[command(version = env!("CARGO_PKG_VERSION"))]
pub struct Cli {
#[arg(long = "ascii")]
pub ascii: bool,
#[arg(long = "no-color")]
pub no_color: bool,
#[arg(long = "narrow")]
pub narrow: bool,
#[arg(long = "plain")]
pub plain: bool,
#[command(subcommand)]
pub command: Option<Commands>,
}
#[derive(Subcommand)]
pub enum Commands {
Find {
ports: Vec<u16>,
},
Kill {
ports: Vec<u16>,
#[arg(short = 'f', long = "force")]
force: bool,
},
List,
Who {
paths: Vec<PathBuf>,
},
Remove {
paths: Vec<PathBuf>,
#[arg(short = 'f', long = "force")]
force: bool,
#[arg(short = 'r', long = "recursive")]
recursive: bool,
#[arg(short = 'n', long = "dry-run")]
dry_run: bool,
#[arg(short = 'V', long = "verbose")]
verbose: bool,
#[arg(long = "anyway", visible_alias = "kill-lockers")]
anyway: bool,
},
Top {
#[arg(long = "interval", default_value_t = 1.0)]
interval: f32,
#[arg(long = "limit", default_value_t = 20)]
limit: usize,
#[arg(long = "cpu")]
cpu: bool,
#[arg(long = "cmd")]
cmd: bool,
#[arg(long = "once")]
once: bool,
},
}