use clap::{Parser, Subcommand};
use std::path::PathBuf;
#[derive(Parser)]
#[command(name = "ziro")]
#[command(about = "查找和终止占用端口的进程", long_about = None)]
#[command(version = env!("CARGO_PKG_VERSION"))]
#[command(disable_version_flag = true)]
pub struct Cli {
#[arg(short = 'v', long = "version")]
pub version: 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,
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(long = "verbose")]
verbose: bool,
#[arg(long = "anyway")]
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,
},
}