This commit is contained in:
Vinícius Rodrigues Miguel 2021-03-27 01:34:43 -03:00
parent 234e0406a1
commit 91f411439a
4 changed files with 27 additions and 13 deletions

View File

@ -5,8 +5,8 @@ use tar::Builder;
use walkdir::WalkDir;
use super::compressor::Entry;
use crate::{compressors::Compressor, file::File};
use crate::utils;
use crate::{compressors::Compressor, file::File};
pub struct TarCompressor {}
@ -21,7 +21,6 @@ impl TarCompressor {
}
fn make_archive_from_files(input_filenames: Vec<PathBuf>) -> crate::Result<Vec<u8>> {
let buf = Vec::new();
let mut b = Builder::new(buf);

View File

@ -1,4 +1,7 @@
use std::{io::{Cursor, Write}, path::PathBuf};
use std::{
io::{Cursor, Write},
path::PathBuf,
};
use walkdir::WalkDir;
@ -52,7 +55,6 @@ impl ZipCompressor {
zip::write::FileOptions::default().compression_method(zip::CompressionMethod::Deflated);
for filename in input_filenames {
let previous_location = utils::change_dir_and_return_parent(&filename)?;
let filename = filename
.file_name()

View File

@ -1,4 +1,7 @@
use std::{env, fs, path::{Path, PathBuf}};
use std::{
env, fs,
path::{Path, PathBuf},
};
use colored::Colorize;
@ -61,16 +64,26 @@ pub(crate) fn get_destination_path(dest: &Option<File>) -> &Path {
}
}
pub (crate) fn change_dir_and_return_parent(filename: &PathBuf) -> crate::Result<PathBuf> {
pub(crate) fn change_dir_and_return_parent(filename: &PathBuf) -> crate::Result<PathBuf> {
let previous_location = env::current_dir()?;
let parent = if let Some(parent) = filename.parent() {
parent
} else {
let spacing = " ";
println!("{} It seems you're trying to compress the root folder.", "[WARNING]".red());
println!("{}This is unadvisable since ouch does compressions in-memory.", spacing);
println!("{}Use a more appropriate tool for this, such as {}.", spacing, "rsync".green());
println!(
"{} It seems you're trying to compress the root folder.",
"[WARNING]".red()
);
println!(
"{}This is unadvisable since ouch does compressions in-memory.",
spacing
);
println!(
"{}Use a more appropriate tool for this, such as {}.",
spacing,
"rsync".green()
);
return Err(crate::Error::InvalidInput);
};