Download right language server binary for OS (#8040)

Release Notes:

- Download right language server binary for OS
This commit is contained in:
bbb651 2024-02-19 23:53:03 -08:00 committed by GitHub
parent 3ef8a9910d
commit 4616d66e1d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
8 changed files with 63 additions and 17 deletions

View File

@ -60,13 +60,20 @@ impl RealNodeRuntime {
let _lock = self.installation_lock.lock().await;
log::info!("Node runtime install_if_needed");
let os = match consts::OS {
"macos" => "darwin",
"linux" => "linux",
"windows" => "win",
other => bail!("Running on unsupported os: {other}"),
};
let arch = match consts::ARCH {
"x86_64" => "x64",
"aarch64" => "arm64",
other => bail!("Running on unsupported platform: {other}"),
other => bail!("Running on unsupported architecture: {other}"),
};
let folder_name = format!("node-{VERSION}-darwin-{arch}");
let folder_name = format!("node-{VERSION}-{os}-{arch}");
let node_containing_dir = util::paths::SUPPORT_DIR.join("node");
let node_dir = node_containing_dir.join(folder_name);
let node_binary = node_dir.join("bin/node");
@ -92,7 +99,7 @@ impl RealNodeRuntime {
.await
.context("error creating node containing dir")?;
let file_name = format!("node-{VERSION}-darwin-{arch}.tar.gz");
let file_name = format!("node-{VERSION}-{os}-{arch}.tar.gz");
let url = format!("https://nodejs.org/dist/{VERSION}/{file_name}");
let mut response = self
.http

View File

@ -33,12 +33,18 @@ impl super::LspAdapter for ClojureLspAdapter {
delegate.http_client(),
)
.await?;
let os = match consts::OS {
"macos" => "macos",
"linux" => "linux",
"windows" => "windows",
other => bail!("Running on unsupported os: {other}"),
};
let platform = match consts::ARCH {
"x86_64" => "amd64",
"aarch64" => "aarch64",
other => bail!("Running on unsupported platform: {other}"),
};
let asset_name = format!("clojure-lsp-native-macos-{platform}.zip");
let asset_name = format!("clojure-lsp-native-{os}-{platform}.zip");
let asset = release
.assets
.iter()

View File

@ -1,4 +1,4 @@
use anyhow::{anyhow, Context, Result};
use anyhow::{anyhow, bail, Context, Result};
use async_trait::async_trait;
use collections::HashMap;
use futures::StreamExt;
@ -72,7 +72,13 @@ impl LspAdapter for DenoLspAdapter {
) -> Result<Box<dyn 'static + Send + Any>> {
let release =
latest_github_release("denoland/deno", true, false, delegate.http_client()).await?;
let asset_name = format!("deno-{}-apple-darwin.zip", consts::ARCH);
let os = match consts::OS {
"macos" => "apple-darwin",
"linux" => "unknown-linux-gnu",
"windows" => "pc-windows-msvc",
other => bail!("Running on unsupported os: {other}"),
};
let asset_name = format!("deno-{}-{os}.zip", consts::ARCH);
let asset = release
.assets
.iter()

View File

@ -1,8 +1,9 @@
use std::any::Any;
use std::env::consts;
use std::ffi::OsString;
use std::path::PathBuf;
use anyhow::{anyhow, Result};
use anyhow::{anyhow, bail, Result};
use async_compression::futures::bufread::GzipDecoder;
use async_tar::Archive;
use async_trait::async_trait;
@ -36,11 +37,16 @@ impl LspAdapter for GleamLspAdapter {
) -> Result<Box<dyn 'static + Send + Any>> {
let release =
latest_github_release("gleam-lang/gleam", true, false, delegate.http_client()).await?;
let asset_name = format!(
"gleam-{version}-{arch}-apple-darwin.tar.gz",
"gleam-{version}-{arch}-{os}.tar.gz",
version = release.tag_name,
arch = std::env::consts::ARCH
arch = std::env::consts::ARCH,
os = match consts::OS {
"macos" => "apple-darwin",
"linux" => "unknown-linux-musl",
"windows" => "pc-windows-msvc",
other => bail!("Running on unsupported os: {other}"),
},
);
let asset = release
.assets

View File

@ -30,6 +30,12 @@ impl super::LspAdapter for LuaLspAdapter {
&self,
delegate: &dyn LspAdapterDelegate,
) -> Result<Box<dyn 'static + Send + Any>> {
let os = match consts::OS {
"macos" => "darwin",
"linux" => "linux",
"windows" => "win32",
other => bail!("Running on unsupported os: {other}"),
};
let platform = match consts::ARCH {
"x86_64" => "x64",
"aarch64" => "arm64",
@ -43,7 +49,7 @@ impl super::LspAdapter for LuaLspAdapter {
)
.await?;
let version = &release.tag_name;
let asset_name = format!("lua-language-server-{version}-darwin-{platform}.tar.gz");
let asset_name = format!("lua-language-server-{version}-{os}-{platform}.tar.gz");
let asset = release
.assets
.iter()

View File

@ -1,4 +1,4 @@
use anyhow::{anyhow, Result};
use anyhow::{anyhow, bail, Result};
use async_compression::futures::bufread::GzipDecoder;
use async_trait::async_trait;
use futures::{io::BufReader, StreamExt};
@ -38,7 +38,13 @@ impl LspAdapter for RustLspAdapter {
delegate.http_client(),
)
.await?;
let asset_name = format!("rust-analyzer-{}-apple-darwin.gz", consts::ARCH);
let os = match consts::OS {
"macos" => "apple-darwin",
"linux" => "unknown-linux-gnu",
"windows" => "pc-windows-msvc",
other => bail!("Running on unsupported os: {other}"),
};
let asset_name = format!("rust-analyzer-{}-{os}.gz", consts::ARCH);
let asset = release
.assets
.iter()

View File

@ -1,4 +1,4 @@
use anyhow::{Context, Result};
use anyhow::{bail, Context, Result};
use async_compression::futures::bufread::GzipDecoder;
use async_trait::async_trait;
use futures::{io::BufReader, StreamExt};
@ -28,7 +28,16 @@ impl LspAdapter for TaploLspAdapter {
) -> Result<Box<dyn 'static + Send + Any>> {
let release =
latest_github_release("tamasfe/taplo", true, false, delegate.http_client()).await?;
let asset_name = format!("taplo-full-darwin-{arch}.gz", arch = std::env::consts::ARCH);
let asset_name = format!(
"taplo-full-{os}-{arch}.gz",
os = match std::env::consts::OS {
"macos" => "darwin",
"linux" => "linux",
"windows" => "windows",
other => bail!("Running on unsupported os: {other}"),
},
arch = std::env::consts::ARCH
);
let asset = release
.assets

View File

@ -6,7 +6,7 @@ use futures::{io::BufReader, StreamExt};
use language::{LanguageServerName, LspAdapter, LspAdapterDelegate};
use lsp::LanguageServerBinary;
use smol::fs;
use std::env::consts::ARCH;
use std::env::consts::{ARCH, OS};
use std::{any::Any, path::PathBuf};
use util::async_maybe;
use util::github::latest_github_release;
@ -30,7 +30,7 @@ impl LspAdapter for ZlsAdapter {
) -> Result<Box<dyn 'static + Send + Any>> {
let release =
latest_github_release("zigtools/zls", true, false, delegate.http_client()).await?;
let asset_name = format!("zls-{ARCH}-macos.tar.gz");
let asset_name = format!("zls-{ARCH}-{OS}.tar.gz");
let asset = release
.assets
.iter()