use clap::{Args, Parser, Subcommand};
use enum_variant_type::EnumVariantType;
use evt_trait_object::Variants;
use std::fmt::Debug;
#[derive(Debug, Parser)]
#[command(name = "spb")]
pub struct Cli {
#[command(subcommand)]
pub command: Commands,
}
#[derive(Debug, Subcommand, EnumVariantType, Variants)]
#[variants_trait(CliSubcommand)]
pub enum Commands {
#[evt(derive(Debug, Args))]
StopAny {},
#[evt(derive(Debug, Args))]
Upgrade {},
}
#[async_trait::async_trait]
pub(crate) trait CliSubcommand: Debug + Send {
#[cfg(debug_assertions)]
async fn run(self: Box<Self>) {
println!("Running command: {:#?}", self);
}
#[cfg(not(debug_assertions))]
async fn run(self: Box<Self>);
}