cloud_terrastodon_entrypoint 0.35.0

Main entrypoint for the Cloud Terrastodon CLI
use cloud_terrastodon_azure_devops::fetch_all_azure_devops_projects;
use cloud_terrastodon_azure_devops::fetch_azure_devops_teams_for_project;
use cloud_terrastodon_azure_devops::get_default_organization_url;
use cloud_terrastodon_user_input::Choice;
use cloud_terrastodon_user_input::PickerTui;
use eyre::Result;

pub async fn browse_azure_devops_project_teams() -> Result<()> {
    let org_url = get_default_organization_url().await?;
    let projects = fetch_all_azure_devops_projects(&org_url).await?;
    let project = PickerTui::new()
        .set_header("Azure DevOps Projects")
        .pick_one(projects.into_iter().map(|project| Choice {
            key: format!(
                "{} {:64} - {}",
                project.id,
                project.name,
                project.description.clone().unwrap_or_default()
            ),
            value: project,
        }))?;

    let teams = fetch_azure_devops_teams_for_project(&org_url, &project.id).await?;
    let teams = PickerTui::new()
        .set_header("Azure DevOps Teams")
        .pick_many(teams.into_iter().map(|team| Choice {
            key: format!("{} {:64} - {}", team.id, team.name, team.description),
            value: team,
        }))?;
    println!("{teams:#?}");
    Ok(())
}