architect-api 0.1.5

The Architect trading system rust api
use anyhow::{anyhow, Result};
use git2::Repository;
use std::env;
use std::io::Write;
//use std::process::Command;

fn main() {
    let git_hash = match get_git_hash() {
        Ok(h) => h,
        Err(_e) => "unknown".to_string(),
    };
    let mut version_file = std::fs::File::create("src/version.rs").unwrap();
    writeln!(version_file, "pub const GIT_VERSION: &'static str = \"{}\";", git_hash)
        .unwrap();
    writeln!(version_file, "pub const GIT_VERSION_SHORT: &'static str = \"{}\";", git_hash.chars().take(7).collect::<String>())
        .unwrap();
}

fn get_git_hash() -> Result<String> {
    let package_path = env::var("CARGO_MANIFEST_DIR")?;
    let parent_dir = format!("{}/..", package_path);
    let repo = Repository::open(parent_dir.clone())?;
    let head = repo.head()?;
    let hash = head.target().ok_or(anyhow!("no target?"))?;
    Ok(hash.to_string())
}