use super::app_service::AzureAppServiceArgs;
use super::application_gateway::AzureApplicationGatewayArgs;
use super::audit::AzureAuditArgs;
use super::find::AzureFindArgs;
use super::network_interface::AzureNetworkInterfaceArgs;
use super::pim::AzurePimArgs;
use super::policy::AzurePolicyArgs;
use super::private_endpoint::AzurePrivateEndpointArgs;
use super::public_ip::AzurePublicIpArgs;
use super::resource::AzureResourceArgs;
use super::resource_group::AzureResourceGroupArgs;
use super::role::AzureRoleArgs;
use super::subscription::AzureSubscriptionArgs;
use super::tag::AzureTagArgs;
use super::tenant::AzureTenantArgs;
use super::vm::AzureVmArgs;
use crate::cli::azure::entra::AzureEntraArgs;
use crate::cli::azure_devops::AzureDevOpsArgs;
use clap::Subcommand;
use eyre::Result;
#[derive(Subcommand, Debug, Clone)]
pub enum AzureCommand {
#[command(alias = "app")]
AppService(AzureAppServiceArgs),
Audit(AzureAuditArgs),
#[command(alias = "agw")]
ApplicationGateway(AzureApplicationGatewayArgs),
Find(AzureFindArgs),
#[command(alias = "nic")]
NetworkInterface(AzureNetworkInterfaceArgs),
#[command(aliases = ["rg", "group"])]
ResourceGroup(AzureResourceGroupArgs),
Policy(AzurePolicyArgs),
#[command(aliases = ["pe"])]
PrivateEndpoint(AzurePrivateEndpointArgs),
PublicIp(AzurePublicIpArgs),
Tag(AzureTagArgs),
#[command(alias = "res")]
Resource(AzureResourceArgs),
Role(AzureRoleArgs),
Pim(AzurePimArgs),
#[command(alias = "ad")]
Entra(AzureEntraArgs),
Vm(AzureVmArgs),
#[command(alias = "sub")]
Subscription(AzureSubscriptionArgs),
Tenant(AzureTenantArgs),
#[command(alias = "devops")]
DevOps(AzureDevOpsArgs),
}
impl AzureCommand {
pub async fn invoke(self) -> Result<()> {
match self {
AzureCommand::AppService(args) => {
args.invoke().await?;
}
AzureCommand::Audit(args) => {
args.invoke().await?;
}
AzureCommand::ApplicationGateway(args) => {
args.invoke().await?;
}
AzureCommand::Find(args) => {
args.invoke().await?;
}
AzureCommand::NetworkInterface(args) => {
args.invoke().await?;
}
AzureCommand::ResourceGroup(args) => {
args.invoke().await?;
}
AzureCommand::Policy(args) => {
args.invoke().await?;
}
AzureCommand::PrivateEndpoint(args) => {
args.invoke().await?;
}
AzureCommand::PublicIp(args) => {
args.invoke().await?;
}
AzureCommand::Tag(args) => {
args.invoke().await?;
}
AzureCommand::Resource(args) => {
args.invoke().await?;
}
AzureCommand::Role(args) => {
args.invoke().await?;
}
AzureCommand::Pim(args) => {
args.invoke().await?;
}
AzureCommand::Entra(args) => {
args.invoke().await?;
}
AzureCommand::Vm(args) => {
args.invoke().await?;
}
AzureCommand::Subscription(args) => {
args.invoke().await?;
}
AzureCommand::Tenant(args) => {
args.invoke().await?;
}
AzureCommand::DevOps(args) => {
args.invoke().await?;
}
}
Ok(())
}
}