Fix Python's cached binary retrieval being borked
Co-Authored-By: Max Brunsfeld <max@zed.dev>
This commit is contained in:
parent
e7b7ac9d8c
commit
74ccb3df63
2 changed files with 12 additions and 27 deletions
|
@ -1,6 +1,5 @@
|
||||||
use anyhow::{anyhow, Result};
|
use anyhow::Result;
|
||||||
use async_trait::async_trait;
|
use async_trait::async_trait;
|
||||||
use futures::StreamExt;
|
|
||||||
use language::{LanguageServerName, LspAdapter, LspAdapterDelegate};
|
use language::{LanguageServerName, LspAdapter, LspAdapterDelegate};
|
||||||
use lsp::LanguageServerBinary;
|
use lsp::LanguageServerBinary;
|
||||||
use node_runtime::NodeRuntime;
|
use node_runtime::NodeRuntime;
|
||||||
|
@ -164,31 +163,16 @@ async fn get_cached_server_binary(
|
||||||
container_dir: PathBuf,
|
container_dir: PathBuf,
|
||||||
node: &dyn NodeRuntime,
|
node: &dyn NodeRuntime,
|
||||||
) -> Option<LanguageServerBinary> {
|
) -> Option<LanguageServerBinary> {
|
||||||
(|| async move {
|
let server_path = container_dir.join(SERVER_PATH);
|
||||||
let mut last_version_dir = None;
|
if server_path.exists() {
|
||||||
let mut entries = fs::read_dir(&container_dir).await?;
|
Some(LanguageServerBinary {
|
||||||
while let Some(entry) = entries.next().await {
|
path: node.binary_path().await.log_err()?,
|
||||||
let entry = entry?;
|
arguments: server_binary_arguments(&server_path),
|
||||||
if entry.file_type().await?.is_dir() {
|
})
|
||||||
last_version_dir = Some(entry.path());
|
} else {
|
||||||
}
|
log::error!("missing executable in directory {:?}", server_path);
|
||||||
}
|
None
|
||||||
let last_version_dir = last_version_dir.ok_or_else(|| anyhow!("no cached binary"))?;
|
}
|
||||||
let server_path = last_version_dir.join(SERVER_PATH);
|
|
||||||
if server_path.exists() {
|
|
||||||
Ok(LanguageServerBinary {
|
|
||||||
path: node.binary_path().await?,
|
|
||||||
arguments: server_binary_arguments(&server_path),
|
|
||||||
})
|
|
||||||
} else {
|
|
||||||
Err(anyhow!(
|
|
||||||
"missing executable in directory {:?}",
|
|
||||||
last_version_dir
|
|
||||||
))
|
|
||||||
}
|
|
||||||
})()
|
|
||||||
.await
|
|
||||||
.log_err()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
|
|
|
@ -262,6 +262,7 @@ impl LspAdapter for RustLspAdapter {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async fn get_cached_server_binary(container_dir: PathBuf) -> Option<LanguageServerBinary> {
|
async fn get_cached_server_binary(container_dir: PathBuf) -> Option<LanguageServerBinary> {
|
||||||
(|| async move {
|
(|| async move {
|
||||||
let mut last = None;
|
let mut last = None;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue