Minor style changes

This commit is contained in:
João M. Bezerra 2021-04-06 20:14:33 -03:00
parent 575abeb454
commit 78d5f435ee
16 changed files with 54 additions and 64 deletions

View File

@ -7,8 +7,6 @@ use std::{
use oof::{arg_flag, flag}; use oof::{arg_flag, flag};
pub const VERSION: &str = "0.1.5";
#[derive(PartialEq, Eq, Debug)] #[derive(PartialEq, Eq, Debug)]
pub enum Command { pub enum Command {
/// Files to be compressed /// Files to be compressed
@ -29,7 +27,6 @@ pub enum Command {
pub struct CommandInfo { pub struct CommandInfo {
pub command: Command, pub command: Command,
pub flags: oof::Flags, pub flags: oof::Flags,
// pub config: Config, // From .TOML, maybe, in the future
} }
/// Calls parse_args_and_flags_from using std::env::args_os ( argv ) /// Calls parse_args_and_flags_from using std::env::args_os ( argv )
@ -41,7 +38,6 @@ pub fn parse_args() -> crate::Result<ParsedArgs> {
pub struct ParsedArgs { pub struct ParsedArgs {
pub command: Command, pub command: Command,
pub flags: oof::Flags, pub flags: oof::Flags,
// pub program_called: OsString, // Useful?
} }
fn canonicalize<'a, P>(path: P) -> crate::Result<PathBuf> fn canonicalize<'a, P>(path: P) -> crate::Result<PathBuf>
@ -54,7 +50,7 @@ where
if !path.as_ref().exists() { if !path.as_ref().exists() {
Err(crate::Error::FileNotFound(PathBuf::from(path.as_ref()))) Err(crate::Error::FileNotFound(PathBuf::from(path.as_ref())))
} else { } else {
eprintln!("{} {}", "[ERROR]", io_err); eprintln!("[ERROR] {}", io_err);
Err(crate::Error::IoError) Err(crate::Error::IoError)
} }
} }

View File

@ -10,7 +10,7 @@ use crate::{
utils::{check_for_multiple_files, ensure_exists}, utils::{check_for_multiple_files, ensure_exists},
}; };
pub struct BzipCompressor {} pub struct BzipCompressor;
impl BzipCompressor { impl BzipCompressor {
fn compress_files(files: Vec<PathBuf>, format: CompressionFormat) -> crate::Result<Vec<u8>> { fn compress_files(files: Vec<PathBuf>, format: CompressionFormat) -> crate::Result<Vec<u8>> {

View File

@ -2,12 +2,6 @@ use std::path::PathBuf;
use crate::file::File; use crate::file::File;
// pub enum CompressionResult {
// ZipArchive(Vec<u8>),
// TarArchive(Vec<u8>),
// FileInMemory(Vec<u8>)
// }
pub enum Entry<'a> { pub enum Entry<'a> {
Files(Vec<PathBuf>), Files(Vec<PathBuf>),
InMemory(File<'a>), InMemory(File<'a>),

View File

@ -10,7 +10,7 @@ use crate::{
utils::{check_for_multiple_files, ensure_exists}, utils::{check_for_multiple_files, ensure_exists},
}; };
pub struct GzipCompressor {} pub struct GzipCompressor;
impl GzipCompressor { impl GzipCompressor {
pub fn compress_files( pub fn compress_files(

View File

@ -10,7 +10,7 @@ use crate::{
utils::{check_for_multiple_files, ensure_exists}, utils::{check_for_multiple_files, ensure_exists},
}; };
pub struct LzmaCompressor {} pub struct LzmaCompressor;
impl LzmaCompressor { impl LzmaCompressor {
pub fn compress_files( pub fn compress_files(

View File

@ -1,3 +1,4 @@
//! This module contains the Compressor trait and an implementor for each format.
mod bzip; mod bzip;
mod compressor; mod compressor;
mod gzip; mod gzip;

View File

@ -7,7 +7,7 @@ use walkdir::WalkDir;
use super::compressor::Entry; use super::compressor::Entry;
use crate::{compressors::Compressor, file::File, utils}; use crate::{compressors::Compressor, file::File, utils};
pub struct TarCompressor {} pub struct TarCompressor;
impl TarCompressor { impl TarCompressor {
// TODO: implement this // TODO: implement this

View File

@ -8,7 +8,7 @@ use walkdir::WalkDir;
use super::compressor::Entry; use super::compressor::Entry;
use crate::{compressors::Compressor, file::File, utils}; use crate::{compressors::Compressor, file::File, utils};
pub struct ZipCompressor {} pub struct ZipCompressor;
impl ZipCompressor { impl ZipCompressor {
// TODO: this function does not seem to be working correctly ;/ // TODO: this function does not seem to be working correctly ;/

View File

@ -1,3 +1,5 @@
//! This module contains the Decompressor trait and an implementor for each format.
mod decompressor; mod decompressor;
mod tar; mod tar;
mod to_memory; mod to_memory;
@ -5,11 +7,6 @@ mod zip;
pub use decompressor::{DecompressionResult, Decompressor}; pub use decompressor::{DecompressionResult, Decompressor};
// These decompressors only decompress to memory, pub use self::to_memory::{BzipDecompressor, GzipDecompressor, LzmaDecompressor};
// unlike {Tar, Zip}Decompressor which are capable of // The .tar and .zip decompressors are capable of decompressing directly to storage
// decompressing directly to storage pub use self::{tar::TarDecompressor, zip::ZipDecompressor};
pub use self::{
tar::TarDecompressor,
to_memory::{BzipDecompressor, GzipDecompressor, LzmaDecompressor},
zip::ZipDecompressor,
};

View File

@ -11,7 +11,7 @@ use super::decompressor::{DecompressionResult, Decompressor};
use crate::{bytes::Bytes, dialogs::Confirmation, file::File, utils}; use crate::{bytes::Bytes, dialogs::Confirmation, file::File, utils};
#[derive(Debug)] #[derive(Debug)]
pub struct TarDecompressor {} pub struct TarDecompressor;
impl TarDecompressor { impl TarDecompressor {
fn unpack_files(from: File, into: &Path, flags: &oof::Flags) -> crate::Result<Vec<PathBuf>> { fn unpack_files(from: File, into: &Path, flags: &oof::Flags) -> crate::Result<Vec<PathBuf>> {

View File

@ -6,14 +6,12 @@ use std::{
use colored::Colorize; use colored::Colorize;
use super::decompressor::{DecompressionResult, Decompressor}; use super::decompressor::{DecompressionResult, Decompressor};
use crate::bytes::Bytes; use crate::{bytes::Bytes, extension::CompressionFormat, file::File, utils};
use crate::utils;
use crate::{extension::CompressionFormat, file::File};
struct DecompressorToMemory {} struct DecompressorToMemory;
pub struct GzipDecompressor {} pub struct GzipDecompressor;
pub struct LzmaDecompressor {} pub struct LzmaDecompressor;
pub struct BzipDecompressor {} pub struct BzipDecompressor;
fn get_decoder<'a>( fn get_decoder<'a>(
format: CompressionFormat, format: CompressionFormat,

View File

@ -19,7 +19,7 @@ fn __unix_set_permissions(file_path: &Path, file: &ZipFile) {
} }
} }
pub struct ZipDecompressor {} pub struct ZipDecompressor;
impl ZipDecompressor { impl ZipDecompressor {
fn check_for_comments(file: &ZipFile) { fn check_for_comments(file: &ZipFile) {

View File

@ -8,7 +8,7 @@ use colored::Colorize;
use crate::{ use crate::{
bytes::Bytes, bytes::Bytes,
cli::{Command, VERSION}, cli::Command,
compressors::{ compressors::{
BzipCompressor, Compressor, Entry, GzipCompressor, LzmaCompressor, TarCompressor, BzipCompressor, Compressor, Entry, GzipCompressor, LzmaCompressor, TarCompressor,
ZipCompressor, ZipCompressor,
@ -23,7 +23,7 @@ use crate::{
utils, utils,
}; };
pub struct Evaluator {} pub struct Evaluator;
type BoxedCompressor = Box<dyn Compressor>; type BoxedCompressor = Box<dyn Compressor>;
type BoxedDecompressor = Box<dyn Decompressor>; type BoxedDecompressor = Box<dyn Decompressor>;
@ -48,11 +48,11 @@ impl Evaluator {
// .tar and .zip // .tar and .zip
let first_compressor: Option<Box<dyn Compressor>> = match extension.first_ext { let first_compressor: Option<Box<dyn Compressor>> = match extension.first_ext {
Some(ext) => match ext { Some(ext) => match ext {
CompressionFormat::Tar => Some(Box::new(TarCompressor {})), CompressionFormat::Tar => Some(Box::new(TarCompressor)),
CompressionFormat::Zip => Some(Box::new(ZipCompressor {})), CompressionFormat::Zip => Some(Box::new(ZipCompressor)),
CompressionFormat::Bzip => Some(Box::new(BzipCompressor {})), CompressionFormat::Bzip => Some(Box::new(BzipCompressor)),
CompressionFormat::Gzip => Some(Box::new(GzipCompressor {})), CompressionFormat::Gzip => Some(Box::new(GzipCompressor)),
CompressionFormat::Lzma => Some(Box::new(LzmaCompressor {})), CompressionFormat::Lzma => Some(Box::new(LzmaCompressor)),
}, },
None => None, None => None,
}; };
@ -60,11 +60,11 @@ impl Evaluator {
// Supported second compressors: // Supported second compressors:
// any // any
let second_compressor: Box<dyn Compressor> = match extension.second_ext { let second_compressor: Box<dyn Compressor> = match extension.second_ext {
CompressionFormat::Tar => Box::new(TarCompressor {}), CompressionFormat::Tar => Box::new(TarCompressor),
CompressionFormat::Zip => Box::new(ZipCompressor {}), CompressionFormat::Zip => Box::new(ZipCompressor),
CompressionFormat::Bzip => Box::new(BzipCompressor {}), CompressionFormat::Bzip => Box::new(BzipCompressor),
CompressionFormat::Gzip => Box::new(GzipCompressor {}), CompressionFormat::Gzip => Box::new(GzipCompressor),
CompressionFormat::Lzma => Box::new(LzmaCompressor {}), CompressionFormat::Lzma => Box::new(LzmaCompressor),
}; };
Ok((first_compressor, second_compressor)) Ok((first_compressor, second_compressor))
@ -86,17 +86,17 @@ impl Evaluator {
}; };
let second_decompressor: Box<dyn Decompressor> = match extension.second_ext { let second_decompressor: Box<dyn Decompressor> = match extension.second_ext {
CompressionFormat::Tar => Box::new(TarDecompressor {}), CompressionFormat::Tar => Box::new(TarDecompressor),
CompressionFormat::Zip => Box::new(ZipDecompressor {}), CompressionFormat::Zip => Box::new(ZipDecompressor),
CompressionFormat::Gzip => Box::new(GzipDecompressor {}), CompressionFormat::Gzip => Box::new(GzipDecompressor),
CompressionFormat::Lzma => Box::new(LzmaDecompressor {}), CompressionFormat::Lzma => Box::new(LzmaDecompressor),
CompressionFormat::Bzip => Box::new(BzipDecompressor {}), CompressionFormat::Bzip => Box::new(BzipDecompressor),
}; };
let first_decompressor: Option<Box<dyn Decompressor>> = match extension.first_ext { let first_decompressor: Option<Box<dyn Decompressor>> = match extension.first_ext {
Some(ext) => match ext { Some(ext) => match ext {
CompressionFormat::Tar => Some(Box::new(TarDecompressor {})), CompressionFormat::Tar => Some(Box::new(TarDecompressor)),
CompressionFormat::Zip => Some(Box::new(ZipDecompressor {})), CompressionFormat::Zip => Some(Box::new(ZipDecompressor)),
_other => None, _other => None,
}, },
None => None, None => None,
@ -282,7 +282,7 @@ impl Evaluator {
#[inline] #[inline]
fn version_message() { fn version_message() {
println!("ouch {}", VERSION); println!("ouch {}", crate::VERSION);
} }
fn help_message() { fn help_message() {

View File

@ -86,16 +86,11 @@ impl Extension {
#[derive(Clone, PartialEq, Eq, Debug)] #[derive(Clone, PartialEq, Eq, Debug)]
/// Accepted extensions for input and output /// Accepted extensions for input and output
pub enum CompressionFormat { pub enum CompressionFormat {
// .gz Gzip, // .gz
Gzip, Bzip, // .bz
// .bz Lzma, // .lzma
Bzip, Tar, // .tar (technically not a compression extension, but will do for now)
// .lzma Zip, // .zip
Lzma,
// .tar (technically not a compression extension, but will do for now)
Tar,
// .zip
Zip,
} }
fn extension_from_os_str(ext: &OsStr) -> Result<CompressionFormat, crate::Error> { fn extension_from_os_str(ext: &OsStr) -> Result<CompressionFormat, crate::Error> {

View File

@ -10,6 +10,8 @@ mod file;
mod test; mod test;
mod utils; mod utils;
pub const VERSION: &str = "0.1.5";
use error::{Error, Result}; use error::{Error, Result};
use evaluator::Evaluator; use evaluator::Evaluator;

View File

@ -41,7 +41,14 @@ pub(crate) fn check_for_multiple_files(
format: &CompressionFormat, format: &CompressionFormat,
) -> crate::Result<()> { ) -> crate::Result<()> {
if files.len() != 1 { if files.len() != 1 {
eprintln!("{}: cannot compress multiple files directly to {:#?}.\n Try using an intermediate archival method such as Tar.\n Example: filename.tar{}", "[ERROR]".red(), format, format); eprintln!(
"{}: cannot compress multiple files directly to {:#?}.\n\
Try using an intermediate archival method such as Tar.\n\
Example: filename.tar{}",
"[ERROR]".red(),
format,
format
);
return Err(crate::Error::InvalidInput); return Err(crate::Error::InvalidInput);
} }