Statement-Converter/project/src/main.rs
2025-04-18 18:53:02 -04:00

72 lines
1.6 KiB
Rust

// 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(())
}