use std::env;
use std::path::PathBuf;
fn main() {
let tagver_version = calculate_tagver_version();
println!(
"cargo:rustc-env=TAGVER_CALCULATED_VERSION={}",
tagver_version
);
shadow_rs::ShadowBuilder::builder()
.build()
.expect("shadow-rs build failed");
}
fn workspace_root() -> PathBuf {
let manifest_dir = PathBuf::from(env::var("CARGO_MANIFEST_DIR").unwrap());
manifest_dir
.parent() .and_then(|p| p.parent()) .map(|p| p.to_path_buf())
.unwrap_or_else(|| PathBuf::from("."))
}
fn calculate_tagver_version() -> String {
let work_dir = workspace_root();
let config = tagver::Config::default();
match tagver::calculate_version(&work_dir, &config) {
Ok(result) => result.version.to_string(),
Err(_) => env::var("CARGO_PKG_VERSION").unwrap_or_else(|_| "0.0.0-dev".to_string()),
}
}