spkg 0.0.0

A system packaging and composition tool.
mod install;
mod list;
mod pack;
mod unpack;

use clap::{Parser, Subcommand};

#[derive(Debug, Subcommand)]
pub enum Commands {
    Install(install::CommandArgs),
    List(list::CommandArgs),
    Pack(pack::CommandArgs),
    Unpack(unpack::CommandArgs),
}

#[derive(Parser, Debug)]
#[clap(author, version, about)]
pub struct Args {
    #[clap(subcommand)]
    command: Commands,
}

pub fn dispatch(args: Args) {
    match args.command {
        Commands::List(args) => list::run(args),
        Commands::Install(args) => install::run(args),
        Commands::Pack(args) => pack::run(args),
        Commands::Unpack(args) => unpack::run(args),
    }
}