use clap::Parser;
use std::path::PathBuf;
#[cfg(feature = "openexr")]
const EXR_BACKEND: &str = "openexr-rs 0.11 (C++, DWAA/DWAB)";
#[cfg(not(feature = "openexr"))]
const EXR_BACKEND: &str = "exrs (pure Rust)";
const VERSION_INFO: &str = const_format::concatcp!(
env!("CARGO_PKG_VERSION"), "\n",
"EXR: ", EXR_BACKEND, "\n",
"Video: playa-ffmpeg 8.0 (static)\n",
"Target: ", std::env::consts::ARCH, "-", std::env::consts::OS
);
#[derive(Parser, Debug)]
#[command(author, version = VERSION_INFO, about, long_about = None)]
pub struct Args {
#[arg(value_name = "FILE")]
pub file_path: Option<PathBuf>,
#[arg(short = 'f', long = "file", value_name = "FILE")]
pub files: Vec<PathBuf>,
#[arg(short = 'p', long = "playlist", value_name = "PLAYLIST")]
pub playlist: Option<PathBuf>,
#[arg(short = 'F', long = "fullscreen")]
pub fullscreen: bool,
#[arg(long = "frame", value_name = "N")]
pub start_frame: Option<i32>,
#[arg(short = 'a', long = "autoplay")]
pub autoplay: bool,
#[arg(short = 'o', long = "loop", value_name = "0|1", default_value = "1")]
pub loop_playback: u8,
#[arg(long = "start", value_name = "N")]
pub range_start: Option<i32>,
#[arg(long = "end", value_name = "N")]
pub range_end: Option<i32>,
#[arg(long = "range", value_names = ["START", "END"], num_args = 2)]
pub range: Option<Vec<i32>>,
#[arg(short = 'l', long = "log", value_name = "LOG_FILE")]
pub log_file: Option<Option<PathBuf>>,
#[arg(short = 'v', long = "verbose", action = clap::ArgAction::Count)]
pub verbosity: u8,
#[arg(short = 'c', long = "config-dir", value_name = "DIR")]
pub config_dir: Option<PathBuf>,
#[arg(long = "mem", value_name = "PERCENT", hide = true)]
pub mem_percent: Option<f64>,
#[arg(long = "workers", value_name = "N", hide = true)]
pub workers: Option<usize>,
}