tex-fmt 0.4.0

LaTeX formatter written in Rust
use clap::Parser;
use log::Level::Error;
use std::fs;
use std::process::exit;

mod colors;
mod comments;
mod format;
mod ignore;
mod indent;
mod leave;
mod logging;
mod parse;
mod regexes;
mod subs;
mod wrap;
mod write;
use crate::format::*;
use crate::logging::*;
use crate::parse::*;
use crate::write::*;

const TAB: i8 = 2;

#[cfg(test)]
mod tests;

fn main() {
    let mut args = Cli::parse();
    args.resolve();
    init_logger(&args);
    let mut exit_code = 0;

    for file in &args.files {
        let mut logs = Vec::<Log>::new();
        let extension_valid = check_extension_valid(file);
        if extension_valid {
            if let Ok(text) = fs::read_to_string(file) {
                let new_text = format_file(&text, file, &args, &mut logs);
                if args.print {
                    println!("{}", &new_text);
                } else if args.check && text != new_text {
                    record_file_log(
                        &mut logs,
                        Error,
                        file,
                        "Incorrect formatting.",
                    );
                    exit_code = 1;
                } else if text != new_text {
                    write_file(file, &new_text);
                }
            } else {
                record_file_log(&mut logs, Error, file, "Could not open file.");
                exit_code = 1;
            }
        } else {
            record_file_log(&mut logs, Error, file, "File type invalid.");
            exit_code = 1;
        };

        print_logs(logs);
    }
    exit(exit_code)
}