mod args;
mod config;
mod error;
mod source_provider;
pub use args::Args;
pub use error::Error;
use std::{fs, path::Path};
use bumpalo::Bump;
use log::info;
use orrery::DiagramBuilder;
use source_provider::FsSourceProvider;
pub fn run<'a>(args: &Args, arena: &'a Bump) -> Result<(), Error<'a>> {
info!(
input_path = args.input,
output_path = args.output;
"Processing diagram"
);
let app_config = config::load_config(args.config.as_ref())?;
let root_path = Path::new(&args.input);
let provider = FsSourceProvider::new();
let builder = DiagramBuilder::new(app_config, &provider);
let diagram = builder.parse(arena, root_path)?;
let svg = builder.render_svg(&diagram)?;
fs::write(&args.output, svg)?;
info!(output_file = args.output; "SVG exported successfully");
Ok(())
}