diff --git a/crates/copilot/src/copilot.rs b/crates/copilot/src/copilot.rs index b8d38c757e0ae33159262e5f66d756baeb8a2099..6b619e4979a34027aa1ecdb80219ca8a53bf2b18 100644 --- a/crates/copilot/src/copilot.rs +++ b/crates/copilot/src/copilot.rs @@ -979,7 +979,7 @@ async fn get_copilot_lsp(http: Arc) -> anyhow::Result { let release = latest_github_release("zed-industries/copilot", true, false, http.clone()).await?; - let version_dir = &*paths::COPILOT_DIR.join(format!("copilot-{}", release.name)); + let version_dir = &*paths::COPILOT_DIR.join(format!("copilot-{}", release.tag_name)); fs::create_dir_all(version_dir).await?; let server_path = version_dir.join(SERVER_PATH); diff --git a/crates/util/src/github.rs b/crates/util/src/github.rs index 8503c692672b0c7e78e3521b17a6f973b6d9e78a..d62856ae601643f88fcb4863092b37188de0f796 100644 --- a/crates/util/src/github.rs +++ b/crates/util/src/github.rs @@ -11,7 +11,7 @@ pub struct GitHubLspBinaryVersion { #[derive(Deserialize, Debug)] pub struct GithubRelease { - pub name: String, + pub tag_name: String, #[serde(rename = "prerelease")] pub pre_release: bool, pub assets: Vec, @@ -58,9 +58,10 @@ pub async fn latest_github_release( let releases = match serde_json::from_slice::>(body.as_slice()) { Ok(releases) => releases, - Err(_) => { + Err(err) => { + log::error!("Error deserializing: {:?}", err); log::error!( - "Error deserializing GitHub API response text: {:?}", + "GitHub API response text: {:?}", String::from_utf8_lossy(body.as_slice()) ); return Err(anyhow!("error deserializing latest release")); diff --git a/crates/zed/src/languages/c.rs b/crates/zed/src/languages/c.rs index 8b5902ff75c0b80e1e2e715457d62acef8ac22c3..974a95766ba10267b7e67d8aeb6c700e9474a4d9 100644 --- a/crates/zed/src/languages/c.rs +++ b/crates/zed/src/languages/c.rs @@ -30,14 +30,14 @@ impl super::LspAdapter for CLspAdapter { ) -> Result> { let release = latest_github_release("clangd/clangd", true, false, delegate.http_client()).await?; - let asset_name = format!("clangd-mac-{}.zip", release.name); + let asset_name = format!("clangd-mac-{}.zip", release.tag_name); let asset = release .assets .iter() .find(|asset| asset.name == asset_name) .ok_or_else(|| anyhow!("no asset found matching {:?}", asset_name))?; let version = GitHubLspBinaryVersion { - name: release.name, + name: release.tag_name, url: asset.browser_download_url.clone(), }; Ok(Box::new(version) as Box<_>) diff --git a/crates/zed/src/languages/csharp.rs b/crates/zed/src/languages/csharp.rs index 9d3c63ed51db5142b0a169683be0301d65f20634..475b7573d035aa6298fced3e235a662893944f74 100644 --- a/crates/zed/src/languages/csharp.rs +++ b/crates/zed/src/languages/csharp.rs @@ -52,7 +52,7 @@ impl super::LspAdapter for OmniSharpAdapter { .find(|asset| asset.name == asset_name) .ok_or_else(|| anyhow!("no asset found matching {:?}", asset_name))?; let version = GitHubLspBinaryVersion { - name: release.name, + name: release.tag_name, url: asset.browser_download_url.clone(), }; diff --git a/crates/zed/src/languages/deno.rs b/crates/zed/src/languages/deno.rs index 0020f94a46777bec9e77f137cf846f3394c88f71..a06c6e42d5f1cc798957ababf5c3522282f4357b 100644 --- a/crates/zed/src/languages/deno.rs +++ b/crates/zed/src/languages/deno.rs @@ -79,7 +79,7 @@ impl LspAdapter for DenoLspAdapter { .find(|asset| asset.name == asset_name) .ok_or_else(|| anyhow!("no asset found matching {:?}", asset_name))?; let version = GitHubLspBinaryVersion { - name: release.name, + name: release.tag_name, url: asset.browser_download_url.clone(), }; Ok(Box::new(version) as Box<_>) diff --git a/crates/zed/src/languages/elixir.rs b/crates/zed/src/languages/elixir.rs index f6b19ad06611a001696635ae9d65ad699e5c282d..39b9c0a10016a05f58109c5a3edea76e6849bf3f 100644 --- a/crates/zed/src/languages/elixir.rs +++ b/crates/zed/src/languages/elixir.rs @@ -112,13 +112,8 @@ impl LspAdapter for ElixirLspAdapter { ) -> Result> { let http = delegate.http_client(); let release = latest_github_release("elixir-lsp/elixir-ls", true, false, http).await?; - let version_name = release - .name - .strip_prefix("Release ") - .context("Elixir-ls release name does not start with prefix")? - .to_owned(); - let asset_name = format!("elixir-ls-{version_name}.zip"); + let asset_name = format!("elixir-ls-{}.zip", &release.tag_name); let asset = release .assets .iter() @@ -126,7 +121,7 @@ impl LspAdapter for ElixirLspAdapter { .ok_or_else(|| anyhow!("no asset found matching {asset_name:?}"))?; let version = GitHubLspBinaryVersion { - name: version_name, + name: release.tag_name.clone(), url: asset.browser_download_url.clone(), }; Ok(Box::new(version) as Box<_>) @@ -321,7 +316,7 @@ impl LspAdapter for NextLspAdapter { let release = latest_github_release("elixir-tools/next-ls", true, false, delegate.http_client()) .await?; - let version = release.name; + let version = release.tag_name; let asset_name = format!("next_ls_{platform}"); let asset = release .assets diff --git a/crates/zed/src/languages/gleam.rs b/crates/zed/src/languages/gleam.rs index d8020a0a8542267bffad8348686e2ba1e4002e15..508956b0994f088ab52c8b052353505e37492f67 100644 --- a/crates/zed/src/languages/gleam.rs +++ b/crates/zed/src/languages/gleam.rs @@ -39,7 +39,7 @@ impl LspAdapter for GleamLspAdapter { let asset_name = format!( "gleam-{version}-{arch}-apple-darwin.tar.gz", - version = release.name, + version = release.tag_name, arch = std::env::consts::ARCH ); let asset = release @@ -48,7 +48,7 @@ impl LspAdapter for GleamLspAdapter { .find(|asset| asset.name == asset_name) .ok_or_else(|| anyhow!("no asset found matching {:?}", asset_name))?; Ok(Box::new(GitHubLspBinaryVersion { - name: release.name, + name: release.tag_name, url: asset.browser_download_url.clone(), })) } diff --git a/crates/zed/src/languages/go.rs b/crates/zed/src/languages/go.rs index 871ff0886f9f0c021f4d4e7bd064b63888bba57f..05bea740c5529db9b9db5afb426118a850bd5b89 100644 --- a/crates/zed/src/languages/go.rs +++ b/crates/zed/src/languages/go.rs @@ -47,11 +47,11 @@ impl super::LspAdapter for GoLspAdapter { ) -> Result> { let release = latest_github_release("golang/tools", false, false, delegate.http_client()).await?; - let version: Option = release.name.strip_prefix("gopls/v").map(str::to_string); + let version: Option = release.tag_name.strip_prefix("gopls/v").map(str::to_string); if version.is_none() { log::warn!( - "couldn't infer gopls version from github release name '{}'", - release.name + "couldn't infer gopls version from GitHub release tag name '{}'", + release.tag_name ); } Ok(Box::new(version) as Box<_>) diff --git a/crates/zed/src/languages/lua.rs b/crates/zed/src/languages/lua.rs index c25bb3d12576aac3f6f86b650b6f7e26d6e07b3a..7476ab37ea0497937f904f2bc579ab7394dcc79e 100644 --- a/crates/zed/src/languages/lua.rs +++ b/crates/zed/src/languages/lua.rs @@ -42,7 +42,7 @@ impl super::LspAdapter for LuaLspAdapter { delegate.http_client(), ) .await?; - let version = &release.name; + let version = &release.tag_name; let asset_name = format!("lua-language-server-{version}-darwin-{platform}.tar.gz"); let asset = release .assets @@ -50,7 +50,7 @@ impl super::LspAdapter for LuaLspAdapter { .find(|asset| asset.name == asset_name) .ok_or_else(|| anyhow!("no asset found matching {:?}", asset_name))?; let version = GitHubLspBinaryVersion { - name: release.name, + name: release.tag_name, url: asset.browser_download_url.clone(), }; Ok(Box::new(version) as Box<_>) diff --git a/crates/zed/src/languages/rust.rs b/crates/zed/src/languages/rust.rs index bd00e9350cf8b416515bd5154d09b2da3885b8e1..7a95e26d9bd643fb8c9fe3a023ec4e64bcef7ff9 100644 --- a/crates/zed/src/languages/rust.rs +++ b/crates/zed/src/languages/rust.rs @@ -45,7 +45,7 @@ impl LspAdapter for RustLspAdapter { .find(|asset| asset.name == asset_name) .ok_or_else(|| anyhow!("no asset found matching {:?}", asset_name))?; Ok(Box::new(GitHubLspBinaryVersion { - name: release.name, + name: release.tag_name, url: asset.browser_download_url.clone(), })) } diff --git a/crates/zed/src/languages/toml.rs b/crates/zed/src/languages/toml.rs index e16109be9a3e5c3f0145a711b0099c0a52f789a0..9393fa691e84115c53c75f1f95812af22ba91628 100644 --- a/crates/zed/src/languages/toml.rs +++ b/crates/zed/src/languages/toml.rs @@ -37,7 +37,7 @@ impl LspAdapter for TaploLspAdapter { .context(format!("no asset found matching {asset_name:?}"))?; Ok(Box::new(GitHubLspBinaryVersion { - name: release.name, + name: release.tag_name, url: asset.browser_download_url.clone(), })) } diff --git a/crates/zed/src/languages/typescript.rs b/crates/zed/src/languages/typescript.rs index ff83220922b75589f630972182c1c29f8c89bedd..6ee8e34bfd3ad63f0c55b8ae1733a88b2d3339c6 100644 --- a/crates/zed/src/languages/typescript.rs +++ b/crates/zed/src/languages/typescript.rs @@ -254,7 +254,7 @@ impl LspAdapter for EsLintLspAdapter { ) .await?; Ok(Box::new(GitHubLspBinaryVersion { - name: release.name, + name: release.tag_name, url: release.tarball_url, })) } diff --git a/crates/zed/src/languages/zig.rs b/crates/zed/src/languages/zig.rs index 8fac5c195fc1e83c411e85e9e440d01a88491015..12268c2e14573ced7684db96ffd8b30abf4598f2 100644 --- a/crates/zed/src/languages/zig.rs +++ b/crates/zed/src/languages/zig.rs @@ -37,7 +37,7 @@ impl LspAdapter for ZlsAdapter { .find(|asset| asset.name == asset_name) .ok_or_else(|| anyhow!("no asset found matching {:?}", asset_name))?; let version = GitHubLspBinaryVersion { - name: release.name, + name: release.tag_name, url: asset.browser_download_url.clone(), };