unarchiver 0.0.2

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

use anyhow::Result;
use clap::Parser;

use self::command::archive::ArchiveOpt;
use self::command::unarchive::UnarchiveOpt;

#[derive(Debug, Parser)]
#[command(
    name = "uar",
    about = "CLI Tool for un/archive multiple formats of compressed files",
    author = "Esteban Borai <estebanborai@gmail.com> (https://github.com/EstebanBorai/unarchiver)",
    next_line_help = true
)]
pub enum Command {
    /// Archives a file or directory into a compressed file
    Archive(ArchiveOpt),
    /// Unarchives a compressed file into a directory
    Unarchive(UnarchiveOpt),
}

#[derive(Debug, Parser)]
pub struct Cli {
    #[command(subcommand)]
    pub command: Command,
}

#[tokio::main]
async fn main() -> Result<()> {
    let args = Cli::parse();

    match args.command {
        Command::Archive(opt) => opt.exec().await,
        Command::Unarchive(opt) => opt.exec().await,
    }
}