cloud_terrastodon_entrypoint 0.35.0

Main entrypoint for the Cloud Terrastodon CLI
use cloud_terrastodon_azure::AzureTenantId;
use cloud_terrastodon_azure::fetch_all_application_registrations;
use cloud_terrastodon_user_input::Choice;
use cloud_terrastodon_user_input::PickerTui;
use eyre::Result;
use tracing::info;

pub async fn browse_application_registrations(tenant_id: AzureTenantId) -> Result<()> {
    info!(%tenant_id, "Fetching application registrations");
    let applications = fetch_all_application_registrations(tenant_id).await?;
    let applications = PickerTui::new()
        .set_header("Application Registrations")
        .pick_many(applications.into_iter().map(|application| Choice {
            key: format!(
                "{} {:64} {}",
                application.id, application.display_name, application.app_id
            ),
            value: application,
        }))?;
    info!(
        count = applications.len(),
        "You chose application registrations"
    );
    for application in applications {
        println!(
            "- {} {:64} {}",
            application.id, application.display_name, application.app_id
        );
    }
    Ok(())
}