use crate::{Cli, commands::RunCommand};
#[derive(clap::Parser)]
pub struct Format {
pub input: String,
}
impl RunCommand<()> for Format {
fn run(&self, cli: &Cli) -> miette::Result<()> {
use microcad_driver::prelude as mu;
use mu::traits::{Format, Parse, Sync};
let mut document = mu::Document::open(&self.input)?;
let params = mu::FormatParameters::default();
match document.parse().and(document.format(¶ms)) {
Ok(true) => {
document.sync()?;
eprintln!("Formatted document.");
}
Ok(false) => {
eprintln!("Document has been already formatted.");
}
Err(_) => {
cli.print_diagnostics(&document);
}
}
Ok(())
}
}