use super::terraform_audit::TerraformAuditArgs;
use super::terraform_reflow::TerraformReflowArgs;
use super::terraform_show::TerraformShowArgs;
use super::terraform_source::TerraformSourceArgs;
use crate::cli::terraform::terraform_apply::TerraformApplyArgs;
use clap::Subcommand;
use eyre::Result;
#[derive(Subcommand, Debug, Clone)]
pub enum TerraformCommand {
Audit(TerraformAuditArgs),
#[command(alias = "src")]
Source(TerraformSourceArgs),
Reflow(TerraformReflowArgs),
Show(TerraformShowArgs),
Apply(TerraformApplyArgs),
}
impl TerraformCommand {
pub async fn invoke(self) -> Result<()> {
match self {
TerraformCommand::Audit(args) => args.invoke().await,
TerraformCommand::Source(args) => args.invoke().await,
TerraformCommand::Reflow(args) => args.invoke().await,
TerraformCommand::Show(args) => args.invoke().await,
TerraformCommand::Apply(args) => args.invoke().await,
}
}
}