added support for gz
This commit is contained in:
parent
17ea4f951c
commit
5e152b4a1b
4 changed files with 47 additions and 25 deletions
|
|
@ -1,9 +1,10 @@
|
|||
/*
|
||||
TODO_2: implement remaining extractor functions and write tests
|
||||
*/
|
||||
use std::{fs::{self, File}, io, path::Path,};
|
||||
use std::{fs::{self, File}, io::{self, ErrorKind}, path::Path,};
|
||||
use unrar::Archive;
|
||||
use lzma::reader::LzmaReader;
|
||||
use flate2::read::GzDecoder;
|
||||
pub fn extract_zip(zip_file: &Path) -> io::Result<()> {
|
||||
let file = fs::File::open(zip_file)?;
|
||||
let mut archive = zip::ZipArchive::new(file)?;
|
||||
|
|
@ -116,24 +117,42 @@ pub fn extract_xz(input_path: &Path, output_directory: &Path) -> Result<(), io::
|
|||
|
||||
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_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(){}
|
||||
pub fn extract_gz(input_path: &Path, output_directory: &Path) -> Result<(), io::Error> {
|
||||
// Open the input GZ file
|
||||
let input_file = File::open(input_path)?;
|
||||
|
||||
// Create a GZ decompression reader
|
||||
let mut decompressor = GzDecoder::new(input_file);
|
||||
|
||||
// Determine the output file path
|
||||
let output_file_path = output_directory.join(input_path.file_stem().unwrap());
|
||||
|
||||
// Create the output file
|
||||
let mut output_file = File::create(&output_file_path)?;
|
||||
|
||||
// Read from the decompressor and write to the output file
|
||||
match io::copy(&mut decompressor, &mut output_file) {
|
||||
Ok(_) => Ok(()),
|
||||
Err(err) => Err(io::Error::new(ErrorKind::Other, err.to_string())),
|
||||
}
|
||||
}
|
||||
// pub fn extract_bz2(){}
|
||||
// pub fn extract_tbz2(){}
|
||||
// pub fn extract_tgz(){}
|
||||
// pub fn extract_txz(){}
|
||||
// pub fn extract_lzma(){}
|
||||
// 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(){}
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ use extractors::{
|
|||
// extract_tgz,
|
||||
// extract_txz,
|
||||
// extract_lzma,
|
||||
// extract_gz,
|
||||
extract_gz,
|
||||
// extract_z,
|
||||
// extract_7z,
|
||||
// extract_arj,
|
||||
|
|
@ -81,13 +81,14 @@ fn run() -> i32 {
|
|||
return 1;
|
||||
}
|
||||
}
|
||||
/*
|
||||
"gz" => {
|
||||
if let Err(err) = extract_gz(&fname) {
|
||||
let output_directory = Path::new("output_directory"); // Change this to your desired output directory
|
||||
if let Err(err) = extract_gz(&fname, &output_directory) {
|
||||
println!("Error extracting GZ: {}", err);
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
/*
|
||||
"bz2" => {
|
||||
if let Err(err) = extract_bz2(&fname) {
|
||||
println!("Error extracting BZ2: {}", err);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue