about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorAlex Crichton <alex@alexcrichton.com>2014-10-02 14:50:18 -0700
committerAlex Crichton <alex@alexcrichton.com>2014-10-02 14:50:18 -0700
commitdd0c786d338ef2073848e17b99c53ffdae62eea7 (patch)
tree5007ff9138fb9ef7f41393950dd6205e907aa0a8 /src
parent51820b610e6147b737bbb8a6c9de810aea839148 (diff)
parent1dfb23f4cf5c8a7224cf9d71a0d0b74f22ad252d (diff)
downloadrust-dd0c786d338ef2073848e17b99c53ffdae62eea7.tar.gz
rust-dd0c786d338ef2073848e17b99c53ffdae62eea7.zip
rollup merge of #17682 : nodakai/librustc-handy-version
Diffstat (limited to 'src')
-rw-r--r--src/librustc/driver/mod.rs24
1 files changed, 20 insertions, 4 deletions
diff --git a/src/librustc/driver/mod.rs b/src/librustc/driver/mod.rs
index 88059dc814f..cb671d6e85f 100644
--- a/src/librustc/driver/mod.rs
+++ b/src/librustc/driver/mod.rs
@@ -125,6 +125,21 @@ fn run_compiler(args: &[String]) {
     driver::compile_input(sess, cfg, &input, &odir, &ofile, None);
 }
 
+/// Returns a version string such as "0.12.0-dev".
+pub fn release_str() -> Option<&'static str> {
+    option_env!("CFG_RELEASE")
+}
+
+/// Returns the full SHA1 hash of HEAD of the Git repo from which rustc was built.
+pub fn commit_hash_str() -> Option<&'static str> {
+    option_env!("CFG_VER_HASH")
+}
+
+/// Returns the "commit date" of HEAD of the Git repo from which rustc was built as a static string.
+pub fn commit_date_str() -> Option<&'static str> {
+    option_env!("CFG_VER_DATE")
+}
+
 /// Prints version information and returns None on success or an error
 /// message on failure.
 pub fn version(binary: &str, matches: &getopts::Matches) -> Option<String> {
@@ -134,13 +149,14 @@ pub fn version(binary: &str, matches: &getopts::Matches) -> Option<String> {
         Some(s) => return Some(format!("Unrecognized argument: {}", s))
     };
 
-    println!("{} {}", binary, env!("CFG_VERSION"));
+    println!("{} {}", binary, option_env!("CFG_VERSION").unwrap_or("unknown version"));
     if verbose {
+        fn unw(x: Option<&str>) -> &str { x.unwrap_or("unknown") }
         println!("binary: {}", binary);
-        println!("commit-hash: {}", option_env!("CFG_VER_HASH").unwrap_or("unknown"));
-        println!("commit-date: {}", option_env!("CFG_VER_DATE").unwrap_or("unknown"));
+        println!("commit-hash: {}", unw(commit_hash_str()));
+        println!("commit-date: {}", unw(commit_date_str()));
         println!("host: {}", driver::host_triple());
-        println!("release: {}", env!("CFG_RELEASE"));
+        println!("release: {}", unw(release_str()));
     }
     None
 }