use ::clap::{Parser, ValueHint::FilePath};
use ::gemrendr::{CopyButtonStyle, EmptyLineTag};
use ::std::path::PathBuf;
#[derive(Parser)]
#[command(version, about, long_about = None)]
pub(crate) struct Args {
#[arg(long)]
pub license: bool,
#[arg(short = 'O', long, value_hint = FilePath, required_unless_present("license"))]
pub out_file: Option<PathBuf>,
#[clap(required_unless_present("license"))]
pub in_file: Option<PathBuf>,
#[arg(short = 'c', long, value_enum, default_value_t)]
pub copy_button_style: CopyButtonStyle,
#[arg(short = 'e', long, value_enum, default_value_t)]
pub empty_line_tag: EmptyLineTag,
#[arg(short = 'n', long, default_value_t)]
pub no_preamble: bool,
}
#[cfg(test)]
mod tests {
use super::*;
use crate::constants::PKG_NAME;
#[test]
fn test_parse() {
let args = [PKG_NAME, "-O", "-", "-"];
match Args::try_parse_from(args) {
Err(err) => panic!("{err}"),
Ok(args) => {
assert_eq!(args.license, false);
assert_eq!(args.out_file, Some(PathBuf::from("-")));
assert_eq!(args.in_file, Some(PathBuf::from("-")));
}
}
}
}