Detailed changes
@@ -28,7 +28,8 @@ use std::{
sync::Arc,
};
use util::{
- fs::remove_matching, github::latest_github_release, http::HttpClient, paths, ResultExt,
+ async_maybe, fs::remove_matching, github::latest_github_release, http::HttpClient, paths,
+ ResultExt,
};
actions!(
@@ -992,7 +993,7 @@ async fn get_copilot_lsp(http: Arc<dyn HttpClient>) -> anyhow::Result<PathBuf> {
e @ Err(..) => {
e.log_err();
// Fetch a cached binary, if it exists
- (|| async move {
+ async_maybe!({
let mut last_version_dir = None;
let mut entries = fs::read_dir(paths::COPILOT_DIR.as_path()).await?;
while let Some(entry) = entries.next().await {
@@ -1012,7 +1013,7 @@ async fn get_copilot_lsp(http: Arc<dyn HttpClient>) -> anyhow::Result<PathBuf> {
last_version_dir
))
}
- })()
+ })
.await
}
}
@@ -6,6 +6,7 @@ use lsp::LanguageServerBinary;
use smol::fs::{self, File};
use std::{any::Any, path::PathBuf, sync::Arc};
use util::{
+ async_maybe,
fs::remove_matching,
github::{latest_github_release, GitHubLspBinaryVersion},
ResultExt,
@@ -244,7 +245,7 @@ impl super::LspAdapter for CLspAdapter {
}
async fn get_cached_server_binary(container_dir: PathBuf) -> Option<LanguageServerBinary> {
- (|| async move {
+ async_maybe!({
let mut last_clangd_dir = None;
let mut entries = fs::read_dir(&container_dir).await?;
while let Some(entry) = entries.next().await {
@@ -266,7 +267,7 @@ async fn get_cached_server_binary(container_dir: PathBuf) -> Option<LanguageServ
clangd_dir
))
}
- })()
+ })
.await
.log_err()
}
@@ -12,7 +12,7 @@ use std::{
path::{Path, PathBuf},
sync::Arc,
};
-use util::ResultExt;
+use util::{async_maybe, ResultExt};
const SERVER_PATH: &'static str =
"node_modules/vscode-langservers-extracted/bin/vscode-css-language-server";
@@ -102,7 +102,7 @@ async fn get_cached_server_binary(
container_dir: PathBuf,
node: &dyn NodeRuntime,
) -> Option<LanguageServerBinary> {
- (|| async move {
+ async_maybe!({
let mut last_version_dir = None;
let mut entries = fs::read_dir(&container_dir).await?;
while let Some(entry) = entries.next().await {
@@ -124,7 +124,7 @@ async fn get_cached_server_binary(
last_version_dir
))
}
- })()
+ })
.await
.log_err()
}
@@ -10,8 +10,12 @@ use serde_json::json;
use settings::Settings;
use smol::{fs, fs::File};
use std::{any::Any, env::consts, ffi::OsString, path::PathBuf, sync::Arc};
-use util::{fs::remove_matching, github::latest_github_release};
-use util::{github::GitHubLspBinaryVersion, ResultExt};
+use util::{
+ async_maybe,
+ fs::remove_matching,
+ github::{latest_github_release, GitHubLspBinaryVersion},
+ ResultExt,
+};
#[derive(Clone, Serialize, Deserialize, JsonSchema)]
pub struct DenoSettings {
@@ -196,7 +200,7 @@ impl LspAdapter for DenoLspAdapter {
}
async fn get_cached_server_binary(container_dir: PathBuf) -> Option<LanguageServerBinary> {
- (|| async move {
+ async_maybe!({
let mut last = None;
let mut entries = fs::read_dir(&container_dir).await?;
while let Some(entry) = entries.next().await {
@@ -217,7 +221,7 @@ async fn get_cached_server_binary(container_dir: PathBuf) -> Option<LanguageServ
}
Err(anyhow!("no cached binary"))
- })()
+ })
.await
.log_err()
}
@@ -18,7 +18,7 @@ use std::{
Arc,
},
};
-use util::{fs::remove_matching, github::latest_github_release, ResultExt};
+use util::{async_maybe, fs::remove_matching, github::latest_github_release, ResultExt};
fn server_binary_arguments() -> Vec<OsString> {
vec!["-mode=stdio".into()]
@@ -329,7 +329,7 @@ impl super::LspAdapter for GoLspAdapter {
}
async fn get_cached_server_binary(container_dir: PathBuf) -> Option<LanguageServerBinary> {
- (|| async move {
+ async_maybe!({
let mut last_binary_path = None;
let mut entries = fs::read_dir(&container_dir).await?;
while let Some(entry) = entries.next().await {
@@ -352,7 +352,7 @@ async fn get_cached_server_binary(container_dir: PathBuf) -> Option<LanguageServ
} else {
Err(anyhow!("no cached binary"))
}
- })()
+ })
.await
.log_err()
}
@@ -12,7 +12,7 @@ use std::{
path::{Path, PathBuf},
sync::Arc,
};
-use util::ResultExt;
+use util::{async_maybe, ResultExt};
const SERVER_PATH: &'static str =
"node_modules/vscode-langservers-extracted/bin/vscode-html-language-server";
@@ -102,7 +102,7 @@ async fn get_cached_server_binary(
container_dir: PathBuf,
node: &dyn NodeRuntime,
) -> Option<LanguageServerBinary> {
- (|| async move {
+ async_maybe!({
let mut last_version_dir = None;
let mut entries = fs::read_dir(&container_dir).await?;
while let Some(entry) = entries.next().await {
@@ -124,7 +124,7 @@ async fn get_cached_server_binary(
last_version_dir
))
}
- })()
+ })
.await
.log_err()
}
@@ -16,7 +16,7 @@ use std::{
path::{Path, PathBuf},
sync::{Arc, OnceLock},
};
-use util::{paths, ResultExt};
+use util::{async_maybe, paths, ResultExt};
const SERVER_PATH: &'static str =
"node_modules/vscode-json-languageserver/bin/vscode-json-languageserver";
@@ -158,7 +158,7 @@ async fn get_cached_server_binary(
container_dir: PathBuf,
node: &dyn NodeRuntime,
) -> Option<LanguageServerBinary> {
- (|| async move {
+ async_maybe!({
let mut last_version_dir = None;
let mut entries = fs::read_dir(&container_dir).await?;
while let Some(entry) = entries.next().await {
@@ -181,7 +181,7 @@ async fn get_cached_server_binary(
last_version_dir
))
}
- })()
+ })
.await
.log_err()
}
@@ -14,7 +14,7 @@ use std::{
path::{Path, PathBuf},
sync::Arc,
};
-use util::ResultExt;
+use util::{async_maybe, ResultExt};
fn intelephense_server_binary_arguments(server_path: &Path) -> Vec<OsString> {
vec![server_path.into(), "--stdio".into()]
@@ -108,7 +108,7 @@ async fn get_cached_server_binary(
container_dir: PathBuf,
node: &dyn NodeRuntime,
) -> Option<LanguageServerBinary> {
- (|| async move {
+ async_maybe!({
let mut last_version_dir = None;
let mut entries = fs::read_dir(&container_dir).await?;
while let Some(entry) = entries.next().await {
@@ -130,7 +130,7 @@ async fn get_cached_server_binary(
last_version_dir
))
}
- })()
+ })
.await
.log_err()
}
@@ -9,6 +9,7 @@ use regex::Regex;
use smol::fs::{self, File};
use std::{any::Any, borrow::Cow, env::consts, path::PathBuf, str, sync::Arc};
use util::{
+ async_maybe,
fs::remove_matching,
github::{latest_github_release, GitHubLspBinaryVersion},
ResultExt,
@@ -272,7 +273,7 @@ impl LspAdapter for RustLspAdapter {
}
async fn get_cached_server_binary(container_dir: PathBuf) -> Option<LanguageServerBinary> {
- (|| async move {
+ async_maybe!({
let mut last = None;
let mut entries = fs::read_dir(&container_dir).await?;
while let Some(entry) = entries.next().await {
@@ -283,7 +284,7 @@ async fn get_cached_server_binary(container_dir: PathBuf) -> Option<LanguageServ
path: last.ok_or_else(|| anyhow!("no cached binary"))?,
arguments: Default::default(),
})
- })()
+ })
.await
.log_err()
}
@@ -12,7 +12,7 @@ use std::{
path::{Path, PathBuf},
sync::Arc,
};
-use util::ResultExt;
+use util::{async_maybe, ResultExt};
const SERVER_PATH: &'static str = "node_modules/svelte-language-server/bin/server.js";
@@ -105,7 +105,7 @@ async fn get_cached_server_binary(
container_dir: PathBuf,
node: &dyn NodeRuntime,
) -> Option<LanguageServerBinary> {
- (|| async move {
+ async_maybe!({
let mut last_version_dir = None;
let mut entries = fs::read_dir(&container_dir).await?;
while let Some(entry) = entries.next().await {
@@ -127,7 +127,7 @@ async fn get_cached_server_binary(
last_version_dir
))
}
- })()
+ })
.await
.log_err()
}
@@ -14,7 +14,7 @@ use std::{
path::{Path, PathBuf},
sync::Arc,
};
-use util::ResultExt;
+use util::{async_maybe, ResultExt};
const SERVER_PATH: &'static str = "node_modules/.bin/tailwindcss-language-server";
@@ -135,7 +135,7 @@ async fn get_cached_server_binary(
container_dir: PathBuf,
node: &dyn NodeRuntime,
) -> Option<LanguageServerBinary> {
- (|| async move {
+ async_maybe!({
let mut last_version_dir = None;
let mut entries = fs::read_dir(&container_dir).await?;
while let Some(entry) = entries.next().await {
@@ -157,7 +157,7 @@ async fn get_cached_server_binary(
last_version_dir
))
}
- })()
+ })
.await
.log_err()
}
@@ -15,8 +15,12 @@ use std::{
path::{Path, PathBuf},
sync::Arc,
};
-use util::{fs::remove_matching, github::latest_github_release};
-use util::{github::GitHubLspBinaryVersion, ResultExt};
+use util::{
+ async_maybe,
+ fs::remove_matching,
+ github::{latest_github_release, GitHubLspBinaryVersion},
+ ResultExt,
+};
fn typescript_server_binary_arguments(server_path: &Path) -> Vec<OsString> {
vec![server_path.into(), "--stdio".into()]
@@ -172,7 +176,7 @@ async fn get_cached_ts_server_binary(
container_dir: PathBuf,
node: &dyn NodeRuntime,
) -> Option<LanguageServerBinary> {
- (|| async move {
+ async_maybe!({
let old_server_path = container_dir.join(TypeScriptLspAdapter::OLD_SERVER_PATH);
let new_server_path = container_dir.join(TypeScriptLspAdapter::NEW_SERVER_PATH);
if new_server_path.exists() {
@@ -191,7 +195,7 @@ async fn get_cached_ts_server_binary(
container_dir
))
}
- })()
+ })
.await
.log_err()
}
@@ -324,7 +328,7 @@ async fn get_cached_eslint_server_binary(
container_dir: PathBuf,
node: &dyn NodeRuntime,
) -> Option<LanguageServerBinary> {
- (|| async move {
+ async_maybe!({
// This is unfortunate but we don't know what the version is to build a path directly
let mut dir = fs::read_dir(&container_dir).await?;
let first = dir.next().await.ok_or(anyhow!("missing first file"))??;
@@ -337,7 +341,7 @@ async fn get_cached_eslint_server_binary(
path: node.binary_path().await?,
arguments: eslint_server_binary_arguments(&server_path),
})
- })()
+ })
.await
.log_err()
}
@@ -13,7 +13,7 @@ use std::{
path::{Path, PathBuf},
sync::Arc,
};
-use util::ResultExt;
+use util::{async_maybe, ResultExt};
pub struct VueLspVersion {
vue_version: String,
@@ -188,7 +188,7 @@ async fn get_cached_server_binary(
container_dir: PathBuf,
node: Arc<dyn NodeRuntime>,
) -> Option<(LanguageServerBinary, TypescriptPath)> {
- (|| async move {
+ async_maybe!({
let mut last_version_dir = None;
let mut entries = fs::read_dir(&container_dir).await?;
while let Some(entry) = entries.next().await {
@@ -214,7 +214,7 @@ async fn get_cached_server_binary(
last_version_dir
))
}
- })()
+ })
.await
.log_err()
}
@@ -15,7 +15,7 @@ use std::{
path::{Path, PathBuf},
sync::Arc,
};
-use util::ResultExt;
+use util::{async_maybe, ResultExt};
const SERVER_PATH: &'static str = "node_modules/yaml-language-server/bin/yaml-language-server";
@@ -110,7 +110,7 @@ async fn get_cached_server_binary(
container_dir: PathBuf,
node: &dyn NodeRuntime,
) -> Option<LanguageServerBinary> {
- (|| async move {
+ async_maybe!({
let mut last_version_dir = None;
let mut entries = fs::read_dir(&container_dir).await?;
while let Some(entry) = entries.next().await {
@@ -132,7 +132,7 @@ async fn get_cached_server_binary(
last_version_dir
))
}
- })()
+ })
.await
.log_err()
}