18 lines
No EOL
820 B
Rust
18 lines
No EOL
820 B
Rust
use std::path::{PathBuf};
|
|
|
|
mod zip;
|
|
mod tar;
|
|
|
|
pub fn extract_file(path: &PathBuf, outdir: &str) -> Result<(), String> {
|
|
let file_extension = path.extension()
|
|
.ok_or(format!("Failed to get extension"))?
|
|
.to_str()
|
|
.ok_or(format!("Failed to convert extension to &str"))?;
|
|
match file_extension {
|
|
"zip" => Ok(zip::extract_file(&path, outdir).ok_or(format!("Extract failed"))?),
|
|
"bz2" => Ok(zip::extract_file(&path, outdir).ok_or(format!("Extract failed"))?),
|
|
"tar" => Ok(tar::extract_file(&path, outdir).ok_or(format!("Extract failed"))?),
|
|
"gz" => Ok(tar::extract_file(&path, outdir).ok_or(format!("Extract failed"))?),
|
|
_ => Err(format!("Format not supported"))
|
|
}
|
|
} |