use super::application_registration::AzureEntraApplicationRegistrationArgs;
use super::group::AzureEntraGroupArgs;
use super::oauth2_permission_grant::AzureEntraOAuth2PermissionGrantArgs;
use super::principal::AzureEntraPrincipalArgs;
use super::role::AzureEntraRoleArgs;
use super::service_principal::AzureEntraServicePrincipalArgs;
use super::user::AzureEntraUserArgs;
use clap::Subcommand;
use eyre::Result;
#[derive(Subcommand, Debug, Clone)]
pub enum AzureEntraCommand {
User(AzureEntraUserArgs),
Principal(AzureEntraPrincipalArgs),
Role(AzureEntraRoleArgs),
#[command(alias = "sp")]
ServicePrincipal(AzureEntraServicePrincipalArgs),
#[command(aliases = ["app", "app-reg", "ar"])]
ApplicationRegistration(AzureEntraApplicationRegistrationArgs),
Group(AzureEntraGroupArgs),
#[command(name = "oauth2-permission-grant", aliases = ["oauth2-permission-grants", "oauth2-grant"])]
OAuth2PermissionGrant(AzureEntraOAuth2PermissionGrantArgs),
}
impl AzureEntraCommand {
pub async fn invoke(self) -> Result<()> {
match self {
AzureEntraCommand::User(args) => {
args.invoke().await?;
}
AzureEntraCommand::Principal(args) => {
args.invoke().await?;
}
AzureEntraCommand::Role(args) => {
args.invoke().await?;
}
AzureEntraCommand::ServicePrincipal(args) => {
args.invoke().await?;
}
AzureEntraCommand::ApplicationRegistration(args) => {
args.invoke().await?;
}
AzureEntraCommand::Group(args) => {
args.invoke().await?;
}
AzureEntraCommand::OAuth2PermissionGrant(args) => {
args.invoke().await?;
}
}
Ok(())
}
}