Add Vue language server auto update (#9474)

For #9401

---------

Co-authored-by: Joseph T. Lyons <JosephTLyons@gmail.com>
This commit is contained in:
Hans 2024-03-19 16:58:07 +08:00 committed by GitHub
parent 192cd5f2d2
commit 79a424f28f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -79,19 +79,30 @@ impl super::LspAdapter for VueLspAdapter {
}
async fn fetch_server_binary(
&self,
version: Box<dyn 'static + Send + Any>,
latest_version: Box<dyn 'static + Send + Any>,
container_dir: PathBuf,
_: &dyn LspAdapterDelegate,
) -> Result<LanguageServerBinary> {
let version = version.downcast::<VueLspVersion>().unwrap();
let latest_version = latest_version.downcast::<VueLspVersion>().unwrap();
let server_path = container_dir.join(Self::SERVER_PATH);
let ts_path = container_dir.join(Self::TYPESCRIPT_PATH);
if fs::metadata(&server_path).await.is_err() {
let vue_package_name = "@vue/language-server";
let should_install_vue_language_server = self
.node
.should_install_npm_package(
vue_package_name,
&server_path,
&container_dir,
&latest_version.vue_version,
)
.await;
if should_install_vue_language_server {
self.node
.npm_install_packages(
&container_dir,
&[("@vue/language-server", version.vue_version.as_str())],
&[(vue_package_name, latest_version.vue_version.as_str())],
)
.await?;
}
@ -99,11 +110,23 @@ impl super::LspAdapter for VueLspAdapter {
fs::metadata(&server_path).await.is_ok(),
"@vue/language-server package installation failed"
);
if fs::metadata(&ts_path).await.is_err() {
let ts_package_name = "typescript";
let should_install_ts_language_server = self
.node
.should_install_npm_package(
ts_package_name,
&server_path,
&container_dir,
&latest_version.ts_version,
)
.await;
if should_install_ts_language_server {
self.node
.npm_install_packages(
&container_dir,
&[("typescript", version.ts_version.as_str())],
&[(ts_package_name, latest_version.ts_version.as_str())],
)
.await?;
}