stat_common 1.1.4

A simple server monitoring tool
Documentation
use chrono::Utc;
use std::process::Command;

fn commit_hash() -> Option<String> {
    Command::new("git")
        .args(["rev-parse", "--short", "HEAD"])
        .output()
        .ok()
        .and_then(|output| String::from_utf8(output.stdout).ok())
        .map(|hash| hash.trim().into())
}

fn main() {
    let mut app_version = String::from(env!("CARGO_PKG_VERSION"));
    if let Some(commit_hash) = commit_hash() {
        app_version = format!(
            "v{} ({}, {})",
            app_version,
            commit_hash,
            Utc::now().format("%Y-%m-%d %H:%M:%S %Z")
        );
    }
    println!("cargo:rustc-env=APP_VERSION={app_version}");

    #[cfg(not(target_env = "msvc"))]
    std::env::set_var("PROTOC", protobuf_src::protoc());

    tonic_build::configure()
        .type_attribute(".", "#[derive(serde::Serialize, serde::Deserialize)]")
        .compile(&["proto/server_status.proto"], &["proto"])
        .unwrap();
}