bilingual 0.1.3

A cmdline tool used for markdown translation via calling Chinese translation api cloud services.
Documentation
//! src: https://blog.biofan.org/2019/08/cargo-build-script/
//! 动态生成版本号

use std::{env::var, fs::File, io::Write, path::Path, process::Command};

fn get_git_version() -> String {
    let version = var("CARGO_PKG_VERSION").expect("no `CARGO_PKG_VERSION`");

    let child = Command::new("git").args(["describe", "--always"]).output();
    match child {
        Ok(child) => {
            let buf = std::str::from_utf8(&child.stdout).expect("stdout not read");
            format!("v{version}\ngit ref: {buf}")
        }
        Err(err) => {
            eprintln!("`git describe` err: {err}");
            version
        }
    }
}

fn main() {
    let version = get_git_version();
    let p = Path::new(&var("OUT_DIR").expect("no `OUT_DIR`")).join("VERSION");
    let mut f = File::create(&p).unwrap_or_else(|_| panic!("{p:?} not created"));
    f.write_all(version.trim().as_bytes())
     .unwrap_or_else(|_| panic!("{p:?} not written"));
}