use crate::api::{opt_var, var, CiEnvironment, CiOutput, CiProvider};
pub const GITHUB_OUTPUT: CiOutput = CiOutput {
close_log_group: "::endgroup::",
open_log_group: "::group::{name}",
};
pub fn create_environment() -> CiEnvironment {
let ref_path = var("GITHUB_REF");
CiEnvironment {
base_branch: opt_var("GITHUB_BASE_REF"),
base_revision: None,
branch: opt_var("GITHUB_HEAD_REF")
.or_else(|| opt_var("GITHUB_REF_NAME"))
.unwrap_or_default(),
env_prefix: Some("GITHUB_".into()),
head_revision: None,
id: var("GITHUB_RUN_ID"),
provider: CiProvider::GithubActions,
request_id: opt_var("GITHUB_PULL_REQUEST").or_else(|| {
if ref_path.starts_with("refs/pull") {
Some(ref_path.replace("refs/pull/", "").replace("/merge", ""))
} else {
None
}
}),
request_url: None,
revision: opt_var("GITHUB_HEAD_SHA")
.or_else(|| opt_var("GITHUB_SHA"))
.unwrap_or_default(),
url: None,
}
}