aboutsummaryrefslogtreecommitdiffstats
path: root/src/archive.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/archive.rs')
-rw-r--r--src/archive.rs55
1 files changed, 18 insertions, 37 deletions
diff --git a/src/archive.rs b/src/archive.rs
index b5788f5..02300c5 100644
--- a/src/archive.rs
+++ b/src/archive.rs
@@ -7,7 +7,7 @@ use std::path::PathBuf;
use strum_macros::{Display, EnumIter, EnumString};
use tar::Builder;
-use crate::errors::{ContextualError, ContextualErrorKind};
+use crate::errors::ContextualError;
/// Available compression methods
#[derive(Deserialize, Clone, EnumIter, EnumString, Display)]
@@ -62,17 +62,11 @@ fn tgz_compress(dir: &PathBuf, skip_symlinks: bool) -> Result<(String, Bytes), C
let mut tgz_data = Bytes::new();
let tar_data = tar(src_dir, directory.to_string(), skip_symlinks).map_err(|e| {
- ContextualError::new(ContextualErrorKind::ArchiveCreationError(
- "tarball".to_string(),
- Box::new(e),
- ))
+ ContextualError::ArchiveCreationError("tarball".to_string(), Box::new(e))
})?;
let gz_data = gzip(&tar_data).map_err(|e| {
- ContextualError::new(ContextualErrorKind::ArchiveCreationError(
- "GZIP archive".to_string(),
- Box::new(e),
- ))
+ ContextualError::ArchiveCreationError("GZIP archive".to_string(), Box::new(e))
})?;
tgz_data.extend_from_slice(&gz_data);
@@ -80,15 +74,15 @@ fn tgz_compress(dir: &PathBuf, skip_symlinks: bool) -> Result<(String, Bytes), C
Ok((dst_tgz_filename, tgz_data))
} else {
// https://doc.rust-lang.org/std/ffi/struct.OsStr.html#method.to_str
- Err(ContextualError::new(ContextualErrorKind::InvalidPathError(
+ Err(ContextualError::InvalidPathError(
"Directory name contains invalid UTF-8 characters".to_string(),
- )))
+ ))
}
} else {
// https://doc.rust-lang.org/std/path/struct.Path.html#method.file_name
- Err(ContextualError::new(ContextualErrorKind::InvalidPathError(
+ Err(ContextualError::InvalidPathError(
"Directory name terminates in \"..\"".to_string(),
- )))
+ ))
}
}
@@ -105,20 +99,17 @@ fn tar(
tar_builder
.append_dir_all(inner_folder, &src_dir)
.map_err(|e| {
- ContextualError::new(ContextualErrorKind::IOError(
+ ContextualError::IOError(
format!(
"Failed to append the content of {} to the TAR archive",
&src_dir
),
e,
- ))
+ )
})?;
let tar_content = tar_builder.into_inner().map_err(|e| {
- ContextualError::new(ContextualErrorKind::IOError(
- "Failed to finish writing the TAR archive".to_string(),
- e,
- ))
+ ContextualError::IOError("Failed to finish writing the TAR archive".to_string(), e)
})?;
Ok(tar_content)
@@ -126,24 +117,14 @@ fn tar(
/// Compresses a stream of bytes using the GZIP algorithm, and returns the resulting stream
fn gzip(mut data: &[u8]) -> Result<Vec<u8>, ContextualError> {
- let mut encoder = Encoder::new(Vec::new()).map_err(|e| {
- ContextualError::new(ContextualErrorKind::IOError(
- "Failed to create GZIP encoder".to_string(),
- e,
- ))
- })?;
- io::copy(&mut data, &mut encoder).map_err(|e| {
- ContextualError::new(ContextualErrorKind::IOError(
- "Failed to write GZIP data".to_string(),
- e,
- ))
- })?;
- let data = encoder.finish().into_result().map_err(|e| {
- ContextualError::new(ContextualErrorKind::IOError(
- "Failed to write GZIP trailer".to_string(),
- e,
- ))
- })?;
+ let mut encoder = Encoder::new(Vec::new())
+ .map_err(|e| ContextualError::IOError("Failed to create GZIP encoder".to_string(), e))?;
+ io::copy(&mut data, &mut encoder)
+ .map_err(|e| ContextualError::IOError("Failed to write GZIP data".to_string(), e))?;
+ let data = encoder
+ .finish()
+ .into_result()
+ .map_err(|e| ContextualError::IOError("Failed to write GZIP trailer".to_string(), e))?;
Ok(data)
}