Add Vue language server auto update (#9474)
For #9401 --------- Co-authored-by: Joseph T. Lyons <JosephTLyons@gmail.com>
This commit is contained in:
parent
192cd5f2d2
commit
79a424f28f
1 changed files with 29 additions and 6 deletions
|
@ -79,19 +79,30 @@ impl super::LspAdapter for VueLspAdapter {
|
||||||
}
|
}
|
||||||
async fn fetch_server_binary(
|
async fn fetch_server_binary(
|
||||||
&self,
|
&self,
|
||||||
version: Box<dyn 'static + Send + Any>,
|
latest_version: Box<dyn 'static + Send + Any>,
|
||||||
container_dir: PathBuf,
|
container_dir: PathBuf,
|
||||||
_: &dyn LspAdapterDelegate,
|
_: &dyn LspAdapterDelegate,
|
||||||
) -> Result<LanguageServerBinary> {
|
) -> 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 server_path = container_dir.join(Self::SERVER_PATH);
|
||||||
let ts_path = container_dir.join(Self::TYPESCRIPT_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
|
self.node
|
||||||
.npm_install_packages(
|
.npm_install_packages(
|
||||||
&container_dir,
|
&container_dir,
|
||||||
&[("@vue/language-server", version.vue_version.as_str())],
|
&[(vue_package_name, latest_version.vue_version.as_str())],
|
||||||
)
|
)
|
||||||
.await?;
|
.await?;
|
||||||
}
|
}
|
||||||
|
@ -99,11 +110,23 @@ impl super::LspAdapter for VueLspAdapter {
|
||||||
fs::metadata(&server_path).await.is_ok(),
|
fs::metadata(&server_path).await.is_ok(),
|
||||||
"@vue/language-server package installation failed"
|
"@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
|
self.node
|
||||||
.npm_install_packages(
|
.npm_install_packages(
|
||||||
&container_dir,
|
&container_dir,
|
||||||
&[("typescript", version.ts_version.as_str())],
|
&[(ts_package_name, latest_version.ts_version.as_str())],
|
||||||
)
|
)
|
||||||
.await?;
|
.await?;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue