Skip to main content

semver_common/tools/git/auth/
github.rs

1use r_log::Logger;
2use std::collections::HashMap;
3
4use crate::{Alert, run_command};
5
6/// Caches credentials in git for authenticating with Github as remote origin.
7pub fn set_remote(env: &HashMap<String, String>, logger: &Logger) -> Result<(), Alert> {
8    logger.info("Authenticating with Github");
9    let actor = env
10        .get("GITHUB_ACTOR")
11        .ok_or("GITHUB_ACTOR not in environment variables.")?;
12    let token = env
13        .get("GITHUB_TOKEN")
14        .ok_or("GITHUB_TOKEN not in environment variables.")?;
15    let repo = env
16        .get("GITHUB_REPOSITORY")
17        .ok_or("GITHUB_REPOSITORY not in environment variables.")?;
18    run_command(
19        "git",
20        [
21            "remote",
22            "set-url",
23            "origin",
24            &format!("https://${}:${}@github.com/{}.git", actor, token, repo),
25        ],
26        Some(logger),
27    )?;
28    run_command(
29        "git",
30        ["config", "--global", "user.name", actor],
31        Some(logger),
32    )?;
33    Ok(())
34}