use std::path::PathBuf;
use clap::{
builder::{NonEmptyStringValueParser, TypedValueParser},
Parser,
};
use super::one_char::OneChar;
fn no_newline_string_parser() -> impl TypedValueParser {
NonEmptyStringValueParser::new().map(|s| s.replace(['\r', '\n'], ""))
}
#[derive(Debug, Parser)]
#[command(author, version, about, arg_required_else_help(true))]
pub struct Args {
#[arg(short, long, action = clap::ArgAction::Count)]
pub verbose: u8,
#[arg(short, long)]
pub preview: bool,
#[arg(short, long)]
pub tui: bool,
#[arg(long = "no-system")]
pub no_system: bool,
#[arg(short = 'I', long = "include", name = "PATH", action = clap::ArgAction::Append)]
pub custom_font_paths: Vec<PathBuf>,
#[arg(short = 'f', long = "filter", name = "FILTER", value_parser = no_newline_string_parser())]
pub filter: Option<String>,
#[arg(name = "CHAR")]
pub char: OneChar,
}
pub fn get() -> Args {
Args::parse()
}