cloud_terrastodon_azure_devops 0.35.0

Helpers for interacting with Azure DevOps for the Cloud Terrastodon project
use eyre::bail;

pub struct SensitiveString {
    pub inner: String,
}

pub async fn get_personal_access_token() -> eyre::Result<SensitiveString> {
    match std::env::var("AZDO_PERSONAL_ACCESS_TOKEN") {
        Ok(token) => Ok(SensitiveString { inner: token }),
        Err(e) => match e {
            std::env::VarError::NotPresent => {
                bail!(
                    "AZDO_PERSONAL_ACCESS_TOKEN environment variable not set!\n```pwsh\n$env:AZDO_PERSONAL_ACCESS_TOKEN=Read-Host -MaskInput \"Enter PAT\"\n```\n"
                )
            }
            std::env::VarError::NotUnicode(_) => {
                bail!("AZDO_PERSONAL_ACCESS_TOKEN contains invalid unicode",)
            }
        },
    }
}