refactored extractors to lib

This commit is contained in:
specCon18 2023-09-06 04:51:11 -04:00
parent b54eba4428
commit acd33b44af
5 changed files with 11 additions and 86 deletions

View file

@ -19,3 +19,12 @@ sevenz-rust = "0.5.2"
tar = "0.4.40" tar = "0.4.40"
unrar = "0.5.1" unrar = "0.5.1"
zip = "0.6.6" zip = "0.6.6"
[[bin]]
name = "sk_extract_cli"
path = "src/main.rs"
[lib]
name = "sk_extract_lib"
path = "src/lib/lib.rs"

View file

@ -1,60 +0,0 @@
pub enum Extensions{
Zip,
Rar,
Tar,
Bz2,
Tbz2,
Tgz,
Txz,
Lzma,
Gz,
Xz,
Z,
Sevenz,
Arj,
Cab,
Chm,
Deb,
Dmg,
Iso,
Lzh,
Msi,
Rpm,
Udf,
Wim,
Xar,
Exe
};
pub struct File{
filename: String;
extensions: <Extensions>;
path: String;
};
pub struct Zip{};
pub struct Rar{};
pub struct Tar{};
pub struct Bz2{};
pub struct Tbz2{};
pub struct Tgz{};
pub struct Txz{};
pub struct Lzma{};
pub struct Gz{};
pub struct Gz{};
pub struct Xz{};
pub struct Z{};
pub struct Sevenz{};
pub struct Arj{};
pub struct Cab{};
pub struct Chm{};
pub struct Deb{};
pub struct Dmg{};
pub struct Iso{};
pub struct Lzh{};
pub struct Msi{};
pub struct Rpm{};
pub struct Udf{};
pub struct Wim{};
pub struct Xar{};
pub struct Exe{};

View file

@ -28,15 +28,8 @@ pub fn extract_zip(input_path: &Path, output_directory: &Path) -> Result<(), io:
} }
if (*file.name()).ends_with('/') { if (*file.name()).ends_with('/') {
println!("File {} extracted to \"{}\"", i, full_outpath.display());
fs::create_dir_all(&full_outpath).unwrap(); fs::create_dir_all(&full_outpath).unwrap();
} else { } else {
println!(
"File {} extracted to \"{}\" ({} bytes)",
i,
full_outpath.display(),
file.size()
);
if let Some(p) = full_outpath.parent() { if let Some(p) = full_outpath.parent() {
if !p.exists() { if !p.exists() {
fs::create_dir_all(p).unwrap(); fs::create_dir_all(p).unwrap();
@ -65,11 +58,6 @@ pub fn extract_rar(input_path: &Path, output_directory: &Path) -> Result<(), Box
.open_for_processing() .open_for_processing()
.unwrap(); .unwrap();
while let Some(header) = archive.read_header()? { while let Some(header) = archive.read_header()? {
println!(
"{} bytes: {}",
header.entry().unpacked_size,
header.entry().filename.to_string_lossy(),
);
// Create the complete output path by combining the output_directory and the filename // Create the complete output path by combining the output_directory and the filename
let output_path = output_directory.join(&header.entry().filename); let output_path = output_directory.join(&header.entry().filename);

1
src/lib/lib.rs Normal file
View file

@ -0,0 +1 @@
pub mod extractors;

View file

@ -1,19 +1,6 @@
/*
TODO_3: setup rayon to handle parallel file processsing when passed
more than one file
*/
/*
TODO_1: define supported extensions as structs and write an extensions enum
*/
mod extractors;
// mod extensions;
// use extenstions::{
// File,
// Extensions
// }
use std::{path::Path, fs}; use std::{path::Path, fs};
use rayon::prelude::*; use rayon::prelude::*;
use extractors::{ use sk_extract_lib::extractors::{
extract_zip, extract_zip,
extract_rar, extract_rar,
extract_tar, extract_tar,