pub(super) fn token() -> Option<String> {
["ROOTLE_TOKEN", "GITHUB_TOKEN"]
.into_iter()
.filter_map(|name| std::env::var(name).ok())
.find(|value| !value.is_empty())
.or_else(gh_token)
}
fn gh_token() -> Option<String> {
let output = std::process::Command::new("gh")
.args(["auth", "token"])
.output()
.ok()?;
if !output.status.success() {
return None;
}
let token = String::from_utf8_lossy(&output.stdout).trim().to_string();
(!token.is_empty()).then_some(token)
}