use clap::Parser;
use std::path::PathBuf;
#[derive(Parser, Debug)]
#[command(version, about, long_about = None)]
pub struct Cli {
pub paths: Vec<String>,
#[arg(long, conflicts_with = "no_lossless")]
pub lossless: bool,
#[arg(long)]
pub no_lossless: bool,
#[arg(long, conflicts_with = "no_reencode")]
pub reencode: bool,
#[arg(long)]
pub no_reencode: bool,
#[arg(long, value_name = "DIR", num_args = 0..=1, default_missing_value = "")]
pub backup: Option<PathBuf>,
#[arg(long, value_name = "PATH", num_args = 0..=1, default_missing_value = "", conflicts_with = "no_report")]
pub report: Option<PathBuf>,
#[arg(long)]
pub no_report: bool,
#[arg(long)]
pub analyze_only: bool,
}
impl Cli {
pub fn is_non_interactive(&self) -> bool {
!self.paths.is_empty()
|| self.lossless
|| self.no_lossless
|| self.reencode
|| self.no_reencode
|| self.backup.is_some()
|| self.report.is_some()
|| self.no_report
|| self.analyze_only
}
pub fn lossless_enabled(&self) -> bool {
!self.no_lossless
}
pub fn reencode_enabled(&self) -> bool {
self.reencode && !self.no_reencode
}
pub fn report_enabled(&self) -> bool {
!self.no_report
}
}