From 0e5c8c03ac9290e752d15c23e107bfbd97d03c72 Mon Sep 17 00:00:00 2001 From: Yoshiya Hinosawa Date: Tue, 3 Nov 2020 02:40:33 +0900 Subject: [PATCH] add commit hash and target to long_version output (#8133) --- cli/build.rs | 29 +++++++++++++++++++++++++---- cli/flags.rs | 5 ++++- cli/version.rs | 1 + 3 files changed, 30 insertions(+), 5 deletions(-) diff --git a/cli/build.rs b/cli/build.rs index 6435f02253..4819988e90 100644 --- a/cli/build.rs +++ b/cli/build.rs @@ -104,6 +104,28 @@ fn ts_version() -> String { .collect::() } +fn git_commit_hash() -> String { + if let Ok(output) = std::process::Command::new("git") + .arg("rev-list") + .arg("-1") + .arg("HEAD") + .output() + { + if output.status.success() { + std::str::from_utf8(&output.stdout[..7]) + .unwrap() + .to_string() + } else { + // When not in git repository + // (e.g. when the user install by `cargo install deno`) + "UNKNOWN".to_string() + } + } else { + // When there is no git command for some reason + "UNKNOWN".to_string() + } +} + fn main() { // Don't build V8 if "cargo doc" is being run. This is to support docs.rs. if env::var_os("RUSTDOCFLAGS").is_some() { @@ -114,6 +136,7 @@ fn main() { // op_fetch_asset::trace_serializer(); println!("cargo:rustc-env=TS_VERSION={}", ts_version()); + println!("cargo:rustc-env=GIT_COMMIT_HASH={}", git_commit_hash()); println!( "cargo:rustc-env=DENO_WEB_LIB_PATH={}", deno_web::get_declaration().display() @@ -123,10 +146,8 @@ fn main() { deno_fetch::get_declaration().display() ); - println!( - "cargo:rustc-env=TARGET={}", - std::env::var("TARGET").unwrap() - ); + println!("cargo:rustc-env=TARGET={}", env::var("TARGET").unwrap()); + println!("cargo:rustc-env=PROFILE={}", env::var("PROFILE").unwrap()); let c = PathBuf::from(env::var_os("CARGO_MANIFEST_DIR").unwrap()); let o = PathBuf::from(env::var_os("OUT_DIR").unwrap()); diff --git a/cli/flags.rs b/cli/flags.rs index de98ee96c0..42f8d60d75 100644 --- a/cli/flags.rs +++ b/cli/flags.rs @@ -221,8 +221,11 @@ To evaluate code in the shell: lazy_static! { static ref LONG_VERSION: String = format!( - "{}\nv8 {}\ntypescript {}", + "{} ({}, {}, {})\nv8 {}\ntypescript {}", crate::version::DENO, + crate::version::GIT_COMMIT_HASH, + env!("PROFILE"), + env!("TARGET"), crate::version::v8(), crate::version::TYPESCRIPT ); diff --git a/cli/version.rs b/cli/version.rs index 6967d74356..0f2a69a5ca 100644 --- a/cli/version.rs +++ b/cli/version.rs @@ -1,6 +1,7 @@ // Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. pub const DENO: &str = env!("CARGO_PKG_VERSION"); +pub const GIT_COMMIT_HASH: &str = env!("GIT_COMMIT_HASH"); pub const TYPESCRIPT: &str = crate::js::TS_VERSION; pub fn v8() -> &'static str {