use std::path::PathBuf;
use clap::Parser;
use crate::config::{self, TabKind};
const VERSION: &str = concat!("v", env!("CARGO_PKG_VERSION"));
#[derive(Parser, Default)]
#[clap(name = "wiremix", about = "PipeWire mixer")]
#[command(version = VERSION)]
pub struct Opt {
#[clap(short = 'c', long, value_name = "FILE")]
pub config: Option<PathBuf>,
#[clap(short, long, value_name = "NAME")]
pub remote: Option<String>,
#[clap(short, long)]
pub fps: Option<f32>,
#[clap(short = 's', long, value_name = "NAME")]
pub char_set: Option<String>,
#[clap(short, long, value_name = "NAME")]
pub theme: Option<String>,
#[clap(short, long, value_parser = clap::value_parser!(config::Peaks))]
pub peaks: Option<config::Peaks>,
#[clap(long, conflicts_with = "mouse")]
pub no_mouse: bool,
#[clap(long, conflicts_with = "no_mouse")]
pub mouse: bool,
#[clap(
short = 'v',
long,
value_enum,
value_parser = clap::value_parser!(TabKind),
)]
pub tab: Option<TabKind>,
#[clap(short = 'T', long, num_args = 1.., value_enum)]
pub tabs: Option<Vec<TabKind>>,
#[clap(short = 'm', long, value_name = "PERCENT")]
pub max_volume_percent: Option<f32>,
#[clap(long, conflicts_with = "enforce_max_volume")]
pub no_enforce_max_volume: bool,
#[clap(long, conflicts_with = "no_enforce_max_volume")]
pub enforce_max_volume: bool,
#[clap(long, conflicts_with = "lazy_capture")]
pub no_lazy_capture: bool,
#[clap(long, conflicts_with = "no_lazy_capture")]
pub lazy_capture: bool,
#[cfg(debug_assertions)]
#[clap(short, long)]
pub dump_events: bool,
}
impl Opt {
pub fn parse() -> Self {
<Self as Parser>::parse()
}
}