Fix single file decompression with specified output directory (#93)

This commit is contained in:
figsoda 2021-10-14 19:00:40 -04:00 committed by GitHub
parent c89c34a91f
commit 69e5e3291c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -305,6 +305,8 @@ fn decompress_file(
reader = chain_reader_decoder(format, reader)?; reader = chain_reader_decoder(format, reader)?;
} }
utils::create_dir_if_non_existent(output_folder)?;
match formats[0] { match formats[0] {
Gzip | Bzip | Lzma | Zstd => { Gzip | Bzip | Lzma | Zstd => {
reader = chain_reader_decoder(&formats[0], reader)?; reader = chain_reader_decoder(&formats[0], reader)?;
@ -316,19 +318,15 @@ fn decompress_file(
info!("Successfully uncompressed archive in '{}'.", to_utf(output_path)); info!("Successfully uncompressed archive in '{}'.", to_utf(output_path));
} }
Tar => { Tar => {
utils::create_dir_if_non_existent(output_folder)?;
let _ = crate::archive::tar::unpack_archive(reader, output_folder, flags)?; let _ = crate::archive::tar::unpack_archive(reader, output_folder, flags)?;
info!("Successfully uncompressed archive in '{}'.", to_utf(output_folder)); info!("Successfully uncompressed archive in '{}'.", to_utf(output_folder));
} }
Tgz => { Tgz => {
utils::create_dir_if_non_existent(output_folder)?;
let reader = chain_reader_decoder(&Gzip, reader)?; let reader = chain_reader_decoder(&Gzip, reader)?;
let _ = crate::archive::tar::unpack_archive(reader, output_folder, flags)?; let _ = crate::archive::tar::unpack_archive(reader, output_folder, flags)?;
info!("Successfully uncompressed archive in '{}'.", to_utf(output_folder)); info!("Successfully uncompressed archive in '{}'.", to_utf(output_folder));
} }
Zip => { Zip => {
utils::create_dir_if_non_existent(output_folder)?;
eprintln!("Compressing first into .zip."); eprintln!("Compressing first into .zip.");
eprintln!("Warning: .zip archives with extra extensions have a downside."); eprintln!("Warning: .zip archives with extra extensions have a downside.");
eprintln!( eprintln!(