INNER CODE UNIT · Rust

git_version_status

pingw33n/vault13 · build.rs:54

fn git_version_status() -> GitVersionStatus {
    let o = Command::new("git")
        .args(["describe", "--always", "--dirty", "--broken", "--exclude", "snapshot-*"])
        .output()
        .unwrap();
    let o = std::str::from_utf8(&o.stdout).unwrap().trim();
    assert!(!o.is_empty());
    let re = Regex::new(r#"((?P<ver>^\d+\.\d+\.\d+)|g?[a-zA-Z0-9]{7})(-(?P<dirty>dirty|broken))?$"#).unwrap();
    if let Some(caps) = re.captures(o) {
        let has_ver = caps.name("ver").is_some();
        let dirty = caps.name("dirty").is_some();
        match (has_ver, dirty) {
            (true, false) => {
                assert_eq!(&caps["ver"], env!("CARGO_PKG_VERSION"),
                    "version in Cargo.toml doesn't match version in Git tag");
                GitVersionStatus::Stable
            }
            (false, false) => GitVersionStatus::Dev,

View source record →

📰 Research Paper
Loading…
⏳ Fetching content…