1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50

// 'mac', 'win', 'linux'
pub fn build_target() -> &'static str {
    if cfg!(target_os = "linux") {
        "linux"
    } else if cfg!(target_os = "freebsd") {
        "freebsd"
    } else if cfg!(target_os = "macos") {
        "mac"
    } else if cfg!(target_os = "windows") {
        "win"
    } else if cfg!(unix) {
        "unix"
    } else {
        "other"
    }
}
// 'master', ... (git branches or tags)
pub fn build_reference() -> Option<&'static str> {
    option_env!("CI_COMMIT_REF_NAME")
}
// '123', ... (GitLab CI pipeline id)
pub fn build_pipeline_id() -> Option<&'static str> {
    option_env!("CI_PIPELINE_ID")
}
// '123', ... (GitLab CI pipeline id per project)
pub fn build_pipeline_id_per_project() -> Option<&'static str> {
    option_env!("CI_PIPELINE_IID")
}
// '123', ... (GitLab CI job id)
pub fn build_job_id() -> Option<&'static str> {
    option_env!("CI_JOB_ID")
}
// git revision if available
pub fn build_revision() -> Option<&'static str> {
    option_env!("CI_COMMIT_SHA")
}
// sentry error reporting DSN
pub fn build_sentry_dsn() -> Option<&'static str> {
    option_env!("SENTRY_DSN")
}

#[cfg(test)]
mod tests {
    #[test]
    fn it_works() {
        println!("{}", crate::build_target());
        assert!(true);
    }
}