idt/installers/
typescript_language_server.rs

1use std::path::Path;
2
3use crate::Installer;
4
5pub struct TypescriptLanguageServer<'a> {
6    pub dev_tools_dir: &'a Path,
7    pub bin_dir: &'a Path,
8}
9
10impl Installer for TypescriptLanguageServer<'_> {
11    fn bin_name(&self) -> &'static str {
12        "typescript-language-server"
13    }
14
15    fn install(&self) -> color_eyre::Result<()> {
16        let target_dir =
17            crate::downloaders::npm::run(self.dev_tools_dir, self.bin_name(), &[self.bin_name(), "typescript"])?;
18
19        let target = target_dir.join(self.bin_name());
20        ytil_sys::file::ln_sf(&target, &self.bin_dir.join(self.bin_name()))?;
21        ytil_sys::file::chmod_x(target)?;
22
23        Ok(())
24    }
25}