use clap::Parser;
use mt940::parse_mt940;
use mt940::sanitizers::sanitize;
use std::fs;
use std::io::{self, Write};
use std::path::PathBuf;
#[derive(Parser)]
#[clap(name = "sta2json", author, about, version)]
pub struct Args {
#[clap(short, long)]
pub strict: bool,
#[clap()]
pub statement: PathBuf,
#[clap()]
pub output: Option<PathBuf>,
}
fn main() -> Result<(), Box<dyn std::error::Error>> {
let args = Args::parse();
let mut input = fs::read_to_string(args.statement)?;
if !args.strict {
input = sanitize(&input);
}
let parsed = parse_mt940(&input).unwrap_or_else(|e| panic!("{}", e));
let json = serde_json::to_string_pretty(&parsed)?;
if let Some(output) = args.output {
fs::write(output, json)?;
} else {
io::stdout().write_all(json.as_bytes())?;
};
Ok(())
}