summaryrefslogtreecommitdiff
path: root/helix-loader
diff options
context:
space:
mode:
authorMatouš Dzivjak2022-12-09 03:57:03 +0000
committerGitHub2022-12-09 03:57:03 +0000
commit8abed3bd78200fc5f7e3890fd853c17ce518d157 (patch)
tree8edd1bf79e309fe32bb3cd6dad9848a4113ffdc8 /helix-loader
parent6798a6651f9d314eacefddfd051661b030ca9d78 (diff)
feat(lsp): pass client_info on initialization (#4904)
Pass client name ('helix') and client version (version / git hash) to LSP server on initialization.
Diffstat (limited to 'helix-loader')
-rw-r--r--helix-loader/build.rs20
-rw-r--r--helix-loader/src/lib.rs2
2 files changed, 22 insertions, 0 deletions
diff --git a/helix-loader/build.rs b/helix-loader/build.rs
index e0ebd1c4..c4b89e6b 100644
--- a/helix-loader/build.rs
+++ b/helix-loader/build.rs
@@ -1,6 +1,26 @@
+use std::borrow::Cow;
+use std::process::Command;
+
+const VERSION: &str = include_str!("../VERSION");
+
fn main() {
+ let git_hash = Command::new("git")
+ .args(["rev-parse", "HEAD"])
+ .output()
+ .ok()
+ .filter(|output| output.status.success())
+ .and_then(|x| String::from_utf8(x.stdout).ok());
+
+ let version: Cow<_> = match git_hash {
+ Some(git_hash) => format!("{} ({})", VERSION, &git_hash[..8]).into(),
+ None => VERSION.into(),
+ };
+
println!(
"cargo:rustc-env=BUILD_TARGET={}",
std::env::var("TARGET").unwrap()
);
+
+ println!("cargo:rerun-if-changed=../VERSION");
+ println!("cargo:rustc-env=VERSION_AND_GIT_HASH={}", version);
}
diff --git a/helix-loader/src/lib.rs b/helix-loader/src/lib.rs
index a02a59af..29a9f2e7 100644
--- a/helix-loader/src/lib.rs
+++ b/helix-loader/src/lib.rs
@@ -4,6 +4,8 @@ pub mod grammar;
use etcetera::base_strategy::{choose_base_strategy, BaseStrategy};
use std::path::PathBuf;
+pub const VERSION_AND_GIT_HASH: &str = env!("VERSION_AND_GIT_HASH");
+
pub static RUNTIME_DIR: once_cell::sync::Lazy<PathBuf> = once_cell::sync::Lazy::new(runtime_dir);
static CONFIG_FILE: once_cell::sync::OnceCell<PathBuf> = once_cell::sync::OnceCell::new();