diff --git a/metta-run/Cargo.toml b/metta-run/Cargo.toml index f7f2e90..d3ec4b3 100644 --- a/metta-run/Cargo.toml +++ b/metta-run/Cargo.toml @@ -6,4 +6,5 @@ edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] +chrono = "0.4.38" clap = { version = "4.5.13", features = ["derive"] } diff --git a/metta-run/src/main.rs b/metta-run/src/main.rs index ffad28d..355b86c 100644 --- a/metta-run/src/main.rs +++ b/metta-run/src/main.rs @@ -3,6 +3,7 @@ use formatters::commands::{format, FormatterCommands}; use std::io; mod formatters; mod runners; +mod tools; fn main() -> io::Result<()> { #[derive(Parser)] @@ -22,7 +23,10 @@ fn main() -> io::Result<()> { let args = Args::parse(); let file = args.file; + + let start_time = tools::logger::start_timer(); let metta_output = runners::metta::run(file); + tools::logger::stop_timer(start_time, &metta_output)?; if let Some(command) = args.commands { match command { @@ -31,6 +35,5 @@ fn main() -> io::Result<()> { } else { println!("{}", metta_output); } - Ok(()) } diff --git a/metta-run/src/tools/logger.rs b/metta-run/src/tools/logger.rs new file mode 100644 index 0000000..e5b0e17 --- /dev/null +++ b/metta-run/src/tools/logger.rs @@ -0,0 +1,33 @@ +use chrono::Local; +use std::fs::OpenOptions; +use std::io::Write; +use std::time::{Duration, Instant}; + +pub fn start_timer() -> Instant { + Instant::now() +} + +pub fn stop_timer(start_time: Instant, metta_output: &String) -> Result<(), std::io::Error> { + let now = Local::now(); + let formatted_date = now.format("%Y-%m-%d").to_string(); + + let log_file_name = format!("{}.log", formatted_date); + + let end_time = Instant::now(); + let elapsed_time = end_time.duration_since(start_time); + let final_output = format!( + "\nStart time: {}\nElapsed time: {:.3}\n{}\n", + now.format("%Y-%m-%d %H-%m-%s").to_string(), + elapsed_time.as_secs_f32(), + metta_output + ); + + let mut output_file = OpenOptions::new() + .append(true) + .create(true) + .open(&log_file_name)?; + + output_file.write_all(final_output.as_bytes())?; + + Ok(()) +} diff --git a/metta-run/src/tools/mod.rs b/metta-run/src/tools/mod.rs new file mode 100644 index 0000000..d991728 --- /dev/null +++ b/metta-run/src/tools/mod.rs @@ -0,0 +1 @@ +pub mod logger;