diff --git a/crates/copilot/src/copilot.rs b/crates/copilot/src/copilot.rs index b8d38c757e..6b619e4979 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 8503c69267..d62856ae60 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 8b5902ff75..974a95766b 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 9d3c63ed51..475b7573d0 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 0020f94a46..a06c6e42d5 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 f6b19ad066..39b9c0a100 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 d8020a0a85..508956b099 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 871ff0886f..05bea740c5 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 c25bb3d125..7476ab37ea 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 bd00e9350c..7a95e26d9b 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 e16109be9a..9393fa691e 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 ff83220922..6ee8e34bfd 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 8fac5c195f..12268c2e14 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(), };