use nom_supreme::final_parser::final_parser;
use crate::options::Options;
use crate::writer::DefaultWriter;
use crate::{errors, parser};
pub fn run_cmakefmt(opts: Options) {
let Options {
verbose,
inplace,
input_file,
width,
} = opts;
let file_contents = std::fs::read_to_string(&input_file).expect("Failed to open file");
let mut parser = final_parser(parser::cmake_parser);
if verbose {
println!("{file_contents:#?}");
}
match parser(&file_contents) {
Ok(contents) => {
if verbose {
println!("{contents:#?}");
}
let mut writer = DefaultWriter::new(inplace, input_file.as_str());
contents
.print()
.render(width, &mut writer)
.expect("Failed to format file");
}
Err(err) => {
errors::print_error(&input_file, file_contents.as_str(), &err);
std::process::exit(1);
}
};
}