use clap::Parser;
use xml_schema_generator::{Options, SortBy};
#[derive(Parser, Debug)]
#[command(author, version, about, long_about = None)]
pub struct Args {
#[clap(short, long, default_value_t, value_enum)]
pub parser: ParserArg,
#[clap(short, long, default_value = "Serialize, Deserialize")]
pub derive: String,
#[clap(short, long, default_value_t, value_enum)]
pub sort: SortByArg,
pub input_path: String,
pub output_path: Option<String>,
}
#[derive(clap::ValueEnum, Clone, Default, Debug)]
pub enum SortByArg {
#[default]
Unsorted,
Name,
}
impl From<SortByArg> for SortBy {
fn from(val: SortByArg) -> Self {
match val {
SortByArg::Unsorted => SortBy::Unsorted,
SortByArg::Name => SortBy::XmlName,
}
}
}
#[derive(clap::ValueEnum, Clone, Default, Debug)]
pub enum ParserArg {
#[default]
QuickXmlDe,
SerdeXmlRs,
}
impl From<ParserArg> for Options {
fn from(val: ParserArg) -> Self {
match val {
ParserArg::QuickXmlDe => Options::quick_xml_de(),
ParserArg::SerdeXmlRs => Options::serde_xml_rs(),
}
}
}