supabase-plus 0.2.0

An extra set of tools for managing Supabase projects going beyond the possibilities of regular Supabase CLI
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 {
    /// Stop any running Supabase project
    #[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>);
}