strata-kernel 0.1.0

Internal shared utilities for the Strata engineering knowledge CLI
Documentation
use std::process::Command;

pub fn git_build_id() -> String {
    let commit = match Command::new("git")
        .args(["rev-parse", "--short=12", "HEAD"])
        .output()
    {
        Ok(output) if output.status.success() => {
            let value = String::from_utf8_lossy(&output.stdout).trim().to_string();
            if value.is_empty() {
                "unknown".to_string()
            } else {
                value
            }
        }
        _ => "unknown".to_string(),
    };
    let dirty = match Command::new("git").args(["status", "--porcelain"]).output() {
        Ok(output) => output.status.success() && !output.stdout.is_empty(),
        Err(_) => false,
    };
    if dirty {
        format!("{commit}-dirty")
    } else {
        commit
    }
}