Enable package-version-server
lookup in PATH (#23849)
Release Notes: - Added support for checking for `package-version-server` on the `$PATH`. --------- Signed-off-by: Matthew Penner <me@matthewp.io> Co-authored-by: Marshall Bowers <git@maxdeviant.com>
This commit is contained in:
parent
78b43ba745
commit
ffc7558a1d
1 changed files with 27 additions and 6 deletions
|
@ -321,12 +321,17 @@ fn schema_file_match(path: &Path) -> String {
|
||||||
.replace('\\', "/")
|
.replace('\\', "/")
|
||||||
}
|
}
|
||||||
|
|
||||||
pub(super) struct NodeVersionAdapter;
|
pub struct NodeVersionAdapter;
|
||||||
|
|
||||||
|
impl NodeVersionAdapter {
|
||||||
|
const SERVER_NAME: LanguageServerName =
|
||||||
|
LanguageServerName::new_static("package-version-server");
|
||||||
|
}
|
||||||
|
|
||||||
#[async_trait(?Send)]
|
#[async_trait(?Send)]
|
||||||
impl LspAdapter for NodeVersionAdapter {
|
impl LspAdapter for NodeVersionAdapter {
|
||||||
fn name(&self) -> LanguageServerName {
|
fn name(&self) -> LanguageServerName {
|
||||||
LanguageServerName("package-version-server".into())
|
Self::SERVER_NAME.clone()
|
||||||
}
|
}
|
||||||
|
|
||||||
async fn fetch_latest_server_version(
|
async fn fetch_latest_server_version(
|
||||||
|
@ -351,7 +356,7 @@ impl LspAdapter for NodeVersionAdapter {
|
||||||
} else {
|
} else {
|
||||||
".tar.gz"
|
".tar.gz"
|
||||||
};
|
};
|
||||||
let asset_name = format!("package-version-server-{}-{os}{suffix}", consts::ARCH);
|
let asset_name = format!("{}-{}-{os}{suffix}", Self::SERVER_NAME, consts::ARCH);
|
||||||
let asset = release
|
let asset = release
|
||||||
.assets
|
.assets
|
||||||
.iter()
|
.iter()
|
||||||
|
@ -363,6 +368,20 @@ impl LspAdapter for NodeVersionAdapter {
|
||||||
}))
|
}))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async fn check_if_user_installed(
|
||||||
|
&self,
|
||||||
|
delegate: &dyn LspAdapterDelegate,
|
||||||
|
_: Arc<dyn LanguageToolchainStore>,
|
||||||
|
_: &AsyncApp,
|
||||||
|
) -> Option<LanguageServerBinary> {
|
||||||
|
let path = delegate.which(Self::SERVER_NAME.as_ref()).await?;
|
||||||
|
Some(LanguageServerBinary {
|
||||||
|
path,
|
||||||
|
env: None,
|
||||||
|
arguments: Default::default(),
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
async fn fetch_server_binary(
|
async fn fetch_server_binary(
|
||||||
&self,
|
&self,
|
||||||
latest_version: Box<dyn 'static + Send + Any>,
|
latest_version: Box<dyn 'static + Send + Any>,
|
||||||
|
@ -371,12 +390,13 @@ impl LspAdapter for NodeVersionAdapter {
|
||||||
) -> Result<LanguageServerBinary> {
|
) -> Result<LanguageServerBinary> {
|
||||||
let version = latest_version.downcast::<GitHubLspBinaryVersion>().unwrap();
|
let version = latest_version.downcast::<GitHubLspBinaryVersion>().unwrap();
|
||||||
let destination_path = container_dir.join(format!(
|
let destination_path = container_dir.join(format!(
|
||||||
"package-version-server-{}{}",
|
"{}-{}{}",
|
||||||
|
Self::SERVER_NAME,
|
||||||
version.name,
|
version.name,
|
||||||
std::env::consts::EXE_SUFFIX
|
std::env::consts::EXE_SUFFIX
|
||||||
));
|
));
|
||||||
let destination_container_path =
|
let destination_container_path =
|
||||||
container_dir.join(format!("package-version-server-{}-tmp", version.name));
|
container_dir.join(format!("{}-{}-tmp", Self::SERVER_NAME, version.name));
|
||||||
if fs::metadata(&destination_path).await.is_err() {
|
if fs::metadata(&destination_path).await.is_err() {
|
||||||
let mut response = delegate
|
let mut response = delegate
|
||||||
.http_client()
|
.http_client()
|
||||||
|
@ -397,7 +417,8 @@ impl LspAdapter for NodeVersionAdapter {
|
||||||
|
|
||||||
fs::copy(
|
fs::copy(
|
||||||
destination_container_path.join(format!(
|
destination_container_path.join(format!(
|
||||||
"package-version-server{}",
|
"{}{}",
|
||||||
|
Self::SERVER_NAME,
|
||||||
std::env::consts::EXE_SUFFIX
|
std::env::consts::EXE_SUFFIX
|
||||||
)),
|
)),
|
||||||
&destination_path,
|
&destination_path,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue