unarchiver 0.0.2

CLI Tool for un/archive multiple formats of compressed files
Documentation
pub mod tar;

use std::path::Path;

use anyhow::Result;

use super::Unarchiver;

use self::tar::TarUnarchiver;

#[derive(Debug, Clone)]
pub enum ArchiveKind {
    Tar,
}

impl ArchiveKind {
    pub fn default_extension(&self) -> &'static str {
        match self {
            ArchiveKind::Tar => "tar",
        }
    }
}

impl Unarchiver for ArchiveKind {
    async fn unarchive<P: AsRef<Path>>(&self, path: P, out: P) -> Result<()> {
        match self {
            ArchiveKind::Tar => TarUnarchiver::new().unarchive(path, out).await,
        }
    }

    async fn archive<P: AsRef<Path>>(&self, path: P, out: P) -> Result<()> {
        match self {
            ArchiveKind::Tar => TarUnarchiver::new().archive(path, out).await,
        }
    }
}