pub mod deploy;
pub mod init;
pub mod report;
pub mod run;

use crate::{cli::CliError, config::rezon_config::RezonConfig};
use async_trait::async_trait;
use clap::Command;

// Super basic trait for defining what rapid commands should be composed of
#[async_trait]
pub trait RezonCommand {
	// (1) - Each rapid command must return a clap sub-command with proper config
	fn cmd() -> Command;
	// (2) - All rapid cli commands will have a execute function that they act on
	async fn execute(_: Option<RezonConfig>, _: clap::ArgMatches) -> Result<(), CliError<'static>>;
	// TODO: add some kind of "help" thing here for each --help arg on every rapid command
}
