generated from OBJNULL/Dockerized-Rust
Compare commits
No commits in common. "84837336785d1c932227138c014ad6a81c73330e" and "d29345292901494ded1ff117a2c93cf711b578a2" have entirely different histories.
8483733678
...
d293452929
4 changed files with 3 additions and 81 deletions
|
@ -5,7 +5,6 @@ edition = "2021"
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
pdf-extract = "0.9.0"
|
pdf-extract = "0.9.0"
|
||||||
walkdir = "2.5.0"
|
|
||||||
colored = "3.0.0"
|
colored = "3.0.0"
|
||||||
clap = "4.5.36"
|
clap = "4.5.36"
|
||||||
csv = "1.3.1"
|
csv = "1.3.1"
|
||||||
|
|
|
@ -60,13 +60,6 @@ impl Arguments {
|
||||||
.help("The path where your CSV files are")
|
.help("The path where your CSV files are")
|
||||||
.action(ArgAction::Set)
|
.action(ArgAction::Set)
|
||||||
.required(true),
|
.required(true),
|
||||||
)
|
|
||||||
.arg(
|
|
||||||
Arg::new("file_out")
|
|
||||||
.id("file_out")
|
|
||||||
.help("The path where the master CSV is saved")
|
|
||||||
.action(ArgAction::Set)
|
|
||||||
.required(true),
|
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
.get_matches();
|
.get_matches();
|
||||||
|
@ -100,11 +93,8 @@ impl Arguments {
|
||||||
.get_one::<String>("directory")
|
.get_one::<String>("directory")
|
||||||
.unwrap()
|
.unwrap()
|
||||||
.to_owned();
|
.to_owned();
|
||||||
file_output = package_matches
|
|
||||||
.get_one::<String>("file_out")
|
|
||||||
.unwrap()
|
|
||||||
.to_owned();
|
|
||||||
file_input = String::new();
|
file_input = String::new();
|
||||||
|
file_output = String::new();
|
||||||
}
|
}
|
||||||
_ => unreachable!(),
|
_ => unreachable!(),
|
||||||
}
|
}
|
||||||
|
|
|
@ -46,11 +46,7 @@ fn convert(args: &Arguments) -> Result<()> {
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
fn package(args: &Arguments) -> Result<()> {
|
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!!
|
||||||
Ok(())
|
Ok(())
|
||||||
|
|
|
@ -1,9 +1,5 @@
|
||||||
// Libraries
|
// Libraries
|
||||||
use std::fs::File;
|
use std::io::Result;
|
||||||
use std::io::{self, Result};
|
|
||||||
|
|
||||||
use csv::{self, StringRecord};
|
|
||||||
use walkdir::WalkDir;
|
|
||||||
|
|
||||||
// Structures
|
// Structures
|
||||||
pub struct Packager {
|
pub struct Packager {
|
||||||
|
@ -22,66 +18,7 @@ impl Packager {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Functions
|
// Functions
|
||||||
fn read_csv(&self, path: &str) -> Result<Vec<StringRecord>> {
|
|
||||||
// Opening the File & Reading
|
|
||||||
let file = File::open(path)?;
|
|
||||||
let mut rdr = csv::Reader::from_reader(file);
|
|
||||||
|
|
||||||
// Creating a list of string records
|
|
||||||
let mut result: Vec<StringRecord> = Vec::new();
|
|
||||||
|
|
||||||
// Iterate through records
|
|
||||||
for record in rdr.records() {
|
|
||||||
result.push(record?);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Ok!
|
|
||||||
Ok(result)
|
|
||||||
}
|
|
||||||
fn save(&self, records: Vec<StringRecord>) -> Result<()> {
|
|
||||||
// Writing to the path we want
|
|
||||||
let mut writer = csv::Writer::from_path(&self.file_out)?;
|
|
||||||
|
|
||||||
// Creating the Header
|
|
||||||
writer.write_record(&["Date", "Description", "Amount"])?;
|
|
||||||
|
|
||||||
// Adding all Records
|
|
||||||
for record in &records {
|
|
||||||
writer.write_record(record)?;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Flushing!!
|
|
||||||
writer.flush()?;
|
|
||||||
|
|
||||||
// Ok!!
|
|
||||||
Ok(())
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn start(&self) -> Result<()> {
|
pub fn start(&self) -> Result<()> {
|
||||||
// Holding all Records
|
|
||||||
let mut records: Vec<StringRecord> = Vec::new();
|
|
||||||
|
|
||||||
// Using WalkDir to go through the Directory
|
|
||||||
for entry in WalkDir::new(&self.directory) {
|
|
||||||
// Reference the Path
|
|
||||||
let entry = entry?;
|
|
||||||
let path = entry.path();
|
|
||||||
|
|
||||||
// Is it a file?
|
|
||||||
if !path.is_file() {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Reading the CSV from the Path
|
|
||||||
let file = self.read_csv(path.to_str().unwrap())?;
|
|
||||||
|
|
||||||
// Adding it to the record list
|
|
||||||
records.extend(file);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Saving the Records
|
|
||||||
self.save(records)?;
|
|
||||||
|
|
||||||
// Ok!!
|
// Ok!!
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue