use clap::{Parser, ValueEnum};
use serde::{Deserialize, Serialize};
#[derive(Parser, Debug)]
#[command(
name = "prepyrus",
about = "Verify and process MDX files using a .bib file"
)]
pub struct Cli {
#[arg(long)]
pub bib_file: String,
#[arg(long)]
pub target_path: String,
#[arg(long, value_enum)]
pub mode: Mode,
#[arg(long, value_delimiter = ',')]
pub ignore_paths: Option<Vec<String>>,
#[arg(long)]
pub generate_index_to_file: Option<String>,
#[arg(long, value_parser = parse_prefix_rewrite)]
pub index_link_prefix_rewrite: Option<(String, String)>,
}
#[derive(ValueEnum, Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum Mode {
Verify,
Process,
}
fn parse_prefix_rewrite(s: &str) -> Result<(String, String), String> {
let parts: Vec<&str> = s.splitn(2, ':').collect();
if parts.len() != 2 {
return Err("Expected format: <from>:<to>".to_string());
}
Ok((parts[0].to_string(), parts[1].to_string()))
}