aboutsummaryrefslogtreecommitdiff
path: root/helix-term/build.rs
diff options
context:
space:
mode:
authorBlaž Hrastnik2022-02-02 16:19:44 +0000
committerBlaž Hrastnik2022-02-02 16:19:44 +0000
commitd3221b03a2b3ee5acc68066f34c4e56e2d05ce94 (patch)
treec8180c0ec441ad622c5b0659d5c372fa64526a00 /helix-term/build.rs
parentd6b6ad879e297ff786ce520acd3ce9c4ff3c2e8e (diff)
fix: Only parse git revision, don't use the tag for version
If building from source and the source is contained in a larger repository, we'd contain the wrong version. It's also easy to accidentally have a newer tag that would change the version.
Diffstat (limited to 'helix-term/build.rs')
-rw-r--r--helix-term/build.rs15
1 files changed, 10 insertions, 5 deletions
diff --git a/helix-term/build.rs b/helix-term/build.rs
index 61ffa6f4..21dd5612 100644
--- a/helix-term/build.rs
+++ b/helix-term/build.rs
@@ -1,12 +1,17 @@
+use std::borrow::Cow;
use std::process::Command;
fn main() {
let git_hash = Command::new("git")
- .args(&["describe", "--dirty"])
+ .args(&["rev-parse", "HEAD"])
.output()
- .map(|x| String::from_utf8(x.stdout).ok())
.ok()
- .flatten()
- .unwrap_or_else(|| String::from(env!("CARGO_PKG_VERSION")));
- println!("cargo:rustc-env=VERSION_AND_GIT_HASH={}", git_hash);
+ .and_then(|x| String::from_utf8(x.stdout).ok());
+
+ let version: Cow<_> = match git_hash {
+ Some(git_hash) => format!("{} ({})", env!("CARGO_PKG_VERSION"), &git_hash[..8]).into(),
+ None => env!("CARGO_PKG_VERSION").into(),
+ };
+
+ println!("cargo:rustc-env=VERSION_AND_GIT_HASH={}", version);
}