// Libraries mod action; mod args; mod packager; mod parser; mod printer; mod reader; mod writer; use args::Arguments; use packager::Packager; use parser::Parser; use reader::Reader; use writer::Writer; use std::io::Result; // Functions fn convert(args: &Arguments) -> Result<()> { // Display Status printer::print_generic("📃", "Extracting Text"); // Creating a File Reader & Reading let reader = Reader::new(&args.file_input.clone())?; let text = reader.extract(); // Display Status printer::print_generic("📑", "Parsing Text"); // Creating a Parser to read the Text Content let mut parser = Parser::new(text); parser.start(); // Display Status printer::print_generic("📝", "Writing CSV"); // Creating a Writer and saving the file let writer = Writer::new(&parser.transactions, args.file_output.clone()); writer.save()?; // Display Status printer::print_generic("🏁", "Successful Converting Job"); printer::print_generic("😎", "Thank you for using Statement Converter!"); // Ok! Ok(()) } fn package(args: &Arguments) -> Result<()> { // Creating a Packager let packager = Packager::new(args.csv_directory.clone(), args.file_output.clone()); // Starting it packager.start()?; // Ok!! Ok(()) } // Entry-Point fn main() -> Result<()> { // Reading the Arguments let args = Arguments::new(); // What mode are we in? match args.mode { args::ArgModes::Convert => convert(&args)?, args::ArgModes::Package => package(&args)?, } // It's ok! Ok(()) }