tuktuk-cli 0.2.14

A cli for tuktuk
Documentation
use clap::{Parser, Subcommand};
use tuktuk_cli::{
    cmd::{cron, cron_transaction, task, task_queue, tuktuk_config, Opts},
    result::Result,
};

#[derive(Debug, Parser)]
#[command(name = "tuktuk-cli")]
#[command(about = "A Tuktuk CLI tool")]
struct Cli {
    #[command(flatten)]
    opts: Opts,

    #[command(subcommand)]
    cmd: Cmd,
}

#[derive(Debug, Subcommand)]
pub enum Cmd {
    TuktukConfig(tuktuk_config::TuktukConfigCmd),
    Task(task::TaskCmd),
    TaskQueue(task_queue::TaskQueueCmd),
    Cron(cron::CronCmd),
    CronTransaction(cron_transaction::CronTransactionCmd),
}

#[tokio::main]
async fn main() -> Result {
    let cli = Cli::parse();
    run(cli).await
}

async fn run(cli: Cli) -> Result {
    match cli.cmd {
        Cmd::TuktukConfig(cmd) => cmd.run(cli.opts).await,
        Cmd::Task(cmd) => cmd.run(cli.opts).await,
        Cmd::TaskQueue(cmd) => cmd.run(cli.opts).await,
        Cmd::Cron(cmd) => cmd.run(cli.opts).await,
        Cmd::CronTransaction(cmd) => cmd.run(cli.opts).await,
    }
}