use clap::{Args, Parser, Subcommand};
use crate::cli::defaults::default_iface;
use crate::domain::speed::unit::Unit;
#[derive(Parser)]
#[command(name = "ntw")]
#[command(about = "Network tooling for macOS", long_about = None)]
pub struct Cli {
#[command(subcommand)]
pub command: Option<Commands>,
}
#[derive(Subcommand)]
pub enum Commands {
Speed {
#[arg(short, long, default_value_t = default_iface())]
iface: String,
#[arg(short, long, value_enum, default_value_t = Unit::Auto)]
unit: Unit,
#[arg(short, long, default_value_t = 1000)]
delay: u64,
},
List {
#[arg(short, long, default_value_t = default_iface())]
iface: String,
#[command(flatten)]
dry_run: DryRun,
},
Remove {
#[arg(short, long, default_value_t = default_iface())]
iface: String,
#[arg(short, long)]
ssid: Option<String>,
#[command(flatten)]
dry_run: DryRun,
},
}
#[derive(Args, Debug, Clone, Copy)]
pub struct DryRun {
#[arg(long = "dry-run")]
pub enabled: bool,
}