use crate::noninteractive::audit_azure_devops;
use clap::Args;
use cloud_terrastodon_azure::AzureTenantArgument;
use cloud_terrastodon_azure::AzureTenantArgumentExt;
use eyre::Result;
use std::time::Duration;
#[derive(Args, Debug, Clone)]
pub struct AzureDevOpsAuditArgs {
#[arg(long, default_value_t)]
pub tenant: AzureTenantArgument<'static>,
#[clap(long, default_value = "2months", value_parser = humantime::parse_duration)]
paid_license_inactivity_threshold: Duration,
#[clap(long, default_value = "60days", value_parser = humantime::parse_duration)]
test_license_inactivity_threshold: Duration,
}
impl AzureDevOpsAuditArgs {
pub async fn invoke(self) -> Result<()> {
audit_azure_devops(
self.tenant.resolve().await?,
self.test_license_inactivity_threshold,
self.paid_license_inactivity_threshold,
)
.await
}
}