added empty extractor functions & imported to main

This commit is contained in:
specCon18 2023-09-01 15:58:45 -04:00
parent 0564cc55c1
commit baa881b4fa
2 changed files with 184 additions and 183 deletions

View file

@ -1,30 +1,5 @@
use std::{fs, io, path::Path}; use std::{fs, io, path::Path};
use unrar::Archive; use unrar::Archive;
use xz2::bufread::XzDecoder;
// pub fn extract_xz(xz_file: &Path) -> io::Result<()> {
// let file = fs::File::open(xz_file)?;
// let decompressor = XzDecoder::new(file);
// let mut archive = tar::Archive::new(decompressor);
// for entry in archive.entries()? {
// let mut entry = entry?;
// let entry_path = entry.path()?;
// let full_path = Path::new("output_directory/").join(entry_path);
// if entry.header().entry_type().is_dir() {
// fs::create_dir_all(&full_path)?;
// } else {
// fs::create_dir_all(&full_path.parent().unwrap())?;
// let mut file = fs::File::create(&full_path)?;
// io::copy(&mut entry, &mut file)?;
// }
// }
// Ok(())
// }
pub fn extract_zip(zip_file: &Path) -> io::Result<()> { pub fn extract_zip(zip_file: &Path) -> io::Result<()> {
let file = fs::File::open(zip_file)?; let file = fs::File::open(zip_file)?;
@ -119,3 +94,25 @@ pub fn extract_rar(rar_file: &Path) -> Result<(), Box<dyn std::error::Error>> {
Ok(()) Ok(())
} }
pub fn extract_bz2(){}
pub fn extract_tbz2(){}
pub fn extract_tgz(){}
pub fn extract_txz(){}
pub fn extract_lzma(){}
pub fn extract_gz(){}
pub fn extract_xz(){}
pub fn extract_z(){}
pub fn extract_7z(){}
pub fn extract_arj(){}
pub fn extract_cab(){}
pub fn extract_chm(){}
pub fn extract_deb(){}
pub fn extract_dmg(){}
pub fn extract_iso(){}
pub fn extract_lzh(){}
pub fn extract_msi(){}
pub fn extract_rpm(){}
pub fn extract_udf(){}
pub fn extract_wim(){}
pub fn extract_xar(){}
pub fn extract_exe(){}

View file

@ -1,5 +1,32 @@
mod extractors; mod extractors;
use extractors::{extract_zip, extract_rar, extract_tar}; use extractors::{
extract_zip,
extract_rar,
extract_tar,
extract_bz2,
extract_tbz2,
extract_tgz,
extract_txz,
extract_lzma,
extract_gz,
extract_gz,
extract_xz,
extract_z,
extract_7z,
extract_arj,
extract_cab,
extract_chm,
extract_deb,
extract_dmg,
extract_iso,
extract_lzh,
extract_msi,
extract_rpm,
extract_udf,
extract_wim,
extract_xar,
extract_exe
};
fn main() { fn main() {
std::process::exit(run()); std::process::exit(run());
} }
@ -12,31 +39,6 @@ fn main() {
TODO: [ ] Write for loop to iter over all extensions of a file to handle TODO: [ ] Write for loop to iter over all extensions of a file to handle
files that are tared and then compressed ex: foo.tar.gz, foo.tar.gz files that are tared and then compressed ex: foo.tar.gz, foo.tar.gz
*/ */
/*
TODO: [ ] add support for decompression of:
[] bz2
[] tbz2
[] tgz
[] txz
[] lzma
[] gz
[] xz
[] z
[] 7z
[] arj
[] cab
[] chm
[] deb
[] dmg
[] iso
[] lzh
[] msi
[] rpm
[] udf
[] wim
[] xar
[] exe
*/
fn run() -> i32 { fn run() -> i32 {
let args: Vec<_> = std::env::args().collect(); let args: Vec<_> = std::env::args().collect();
if args.len() < 2 { if args.len() < 2 {
@ -64,138 +66,140 @@ fn run() -> i32 {
return 1; return 1;
} }
} }
// "xz" => { /*
// if let Err(err) = extract_xz(&fname) { "xz" => {
// println!("Error extracting XZ: {}", err); if let Err(err) = extract_xz(&fname) {
// return 1; println!("Error extracting XZ: {}", err);
// } return 1;
// } }
// "gz" => { }
// if let Err(err) = extract_gz(&fname) { "gz" => {
// println!("Error extracting GZ: {}", err); if let Err(err) = extract_gz(&fname) {
// return 1; println!("Error extracting GZ: {}", err);
// } return 1;
// } }
// "bz2" => { }
// if let Err(err) = extract_bz2(&fname) { "bz2" => {
// println!("Error extracting BZ2: {}", err); if let Err(err) = extract_bz2(&fname) {
// return 1; println!("Error extracting BZ2: {}", err);
// } return 1;
// } }
// "tbz2" => { }
// if let Err(err) = extract_tbz2(&fname) { "tbz2" => {
// println!("Error extracting TBZ2: {}", err); if let Err(err) = extract_tbz2(&fname) {
// return 1; println!("Error extracting TBZ2: {}", err);
// } return 1;
// } }
// "txz" => { }
// if let Err(err) = extract_txz(&fname) { "txz" => {
// println!("Error extracting TXZ: {}", err); if let Err(err) = extract_txz(&fname) {
// return 1; println!("Error extracting TXZ: {}", err);
// } return 1;
// } }
// "tgz" => { }
// if let Err(err) = extract_tgz(&fname) { "tgz" => {
// println!("Error extracting TGZ: {}", err); if let Err(err) = extract_tgz(&fname) {
// return 1; println!("Error extracting TGZ: {}", err);
// } return 1;
// } }
// "lzma" => { }
// if let Err(err) = extract_lzma(&fname) { "lzma" => {
// println!("Error extracting LZMA: {}", err); if let Err(err) = extract_lzma(&fname) {
// return 1; println!("Error extracting LZMA: {}", err);
// } return 1;
// } }
// "z" => { }
// if let Err(err) = extract_z(&fname) { "z" => {
// println!("Error extracting Z: {}", err); if let Err(err) = extract_z(&fname) {
// return 1; println!("Error extracting Z: {}", err);
// } return 1;
// } }
// "7z" => { }
// if let Err(err) = extract_7z(&fname) { "7z" => {
// println!("Error extracting 7Z: {}", err); if let Err(err) = extract_7z(&fname) {
// return 1; println!("Error extracting 7Z: {}", err);
// } return 1;
// } }
// "arj" => { }
// if let Err(err) = extract_arj(&fname) { "arj" => {
// println!("Error extracting ARJ: {}", err); if let Err(err) = extract_arj(&fname) {
// return 1; println!("Error extracting ARJ: {}", err);
// } return 1;
// } }
// "cab" => { }
// if let Err(err) = extract_cab(&fname) { "cab" => {
// println!("Error extracting CAB: {}", err); if let Err(err) = extract_cab(&fname) {
// return 1; println!("Error extracting CAB: {}", err);
// } return 1;
// } }
// "chm" => { }
// if let Err(err) = extract_chm(&fname) { "chm" => {
// println!("Error extracting CHM: {}", err); if let Err(err) = extract_chm(&fname) {
// return 1; println!("Error extracting CHM: {}", err);
// } return 1;
// } }
// "deb" => { }
// if let Err(err) = extract_deb(&fname) { "deb" => {
// println!("Error extracting DEB: {}", err); if let Err(err) = extract_deb(&fname) {
// return 1; println!("Error extracting DEB: {}", err);
// } return 1;
// } }
// "dmg" => { }
// if let Err(err) = extract_dmg(&fname) { "dmg" => {
// println!("Error extracting DMG: {}", err); if let Err(err) = extract_dmg(&fname) {
// return 1; println!("Error extracting DMG: {}", err);
// } return 1;
// } }
// "iso" => { }
// if let Err(err) = extract_iso(&fname) { "iso" => {
// println!("Error extracting ISO: {}", err); if let Err(err) = extract_iso(&fname) {
// return 1; println!("Error extracting ISO: {}", err);
// } return 1;
// } }
// "lzh" => { }
// if let Err(err) = extract_lzh(&fname) { "lzh" => {
// println!("Error extracting LZH: {}", err); if let Err(err) = extract_lzh(&fname) {
// return 1; println!("Error extracting LZH: {}", err);
// } return 1;
// } }
// "msi" => { }
// if let Err(err) = extract_msi(&fname) { "msi" => {
// println!("Error extracting MSI: {}", err); if let Err(err) = extract_msi(&fname) {
// return 1; println!("Error extracting MSI: {}", err);
// } return 1;
// } }
// "rpm" => { }
// if let Err(err) = extract_rpm(&fname) { "rpm" => {
// println!("Error extracting RPM: {}", err); if let Err(err) = extract_rpm(&fname) {
// return 1; println!("Error extracting RPM: {}", err);
// } return 1;
// } }
// "udf" => { }
// if let Err(err) = extract_udf(&fname) { "udf" => {
// println!("Error extracting UDF: {}", err); if let Err(err) = extract_udf(&fname) {
// return 1; println!("Error extracting UDF: {}", err);
// } return 1;
// } }
// "wim" => { }
// if let Err(err) = extract_wim(&fname) { "wim" => {
// println!("Error extracting WIM: {}", err); if let Err(err) = extract_wim(&fname) {
// return 1; println!("Error extracting WIM: {}", err);
// } return 1;
// } }
// "xar" => { }
// if let Err(err) = extract_udf(&fname) { "xar" => {
// println!("Error extracting XAR: {}", err); if let Err(err) = extract_udf(&fname) {
// return 1; println!("Error extracting XAR: {}", err);
// } return 1;
// } }
// "exe" => { }
// if let Err(err) = extract_exe(&fname) { "exe" => {
// println!("Error extracting EXE: {}", err); if let Err(err) = extract_exe(&fname) {
// return 1; println!("Error extracting EXE: {}", err);
// } return 1;
// } }
}
*/
_ => { _ => {
println!("Unsupported file extension: {}", extension); println!("Unsupported file extension: {}", extension);
return 1; return 1;