use std::{path::PathBuf, process::ExitCode}; use clap::Parser; // Importing logger here too cause the logger macros dont work outside the mclanc lib mod logger; fn main() -> anyhow::Result<()> { let cli = mclangc::cli::CliArgs::parse(); cli.set_log_level(); cli.validate(); let mut progs = Vec::new(); for file in &cli.input { let fp = PathBuf::from(file); if !fp.exists() { error!("File {fp:?} doesnt exits, exiting"); anyhow::bail!("") } let data = std::fs::read_to_string(&fp).unwrap(); info!("Tokenising {file}"); let tokens = mclangc::tokeniser::tokenise(&data, &file)?; info!("Parsing {file}"); let mut prog = mclangc::parser::parse_program(tokens)?; info!("Validating {file}"); dbg!(&prog); mclangc::validator::validate_code(&mut prog)?; //dbg!(&prog); progs.push((fp, prog)); } mclangc::targets::compile(&cli, progs)?; Ok(()) }