Refactoring: use ls_resources_dir in all other LS

This commit is contained in:
Michael Panchenko committed 2025-07-06 18:36:44 +02:00
1 parent 7e06148648
commit 3eba4c4a1c
8 files changed
+29 -38

No files matched your search

@@ -27,8 +27,8 @@ class DartLanguageServer(SolidLanguageServer):
"dart",
)
@staticmethod
def _setup_runtime_dependencies(logger: "LanguageServerLogger") -> str:
@classmethod
def _setup_runtime_dependencies(cls, logger: "LanguageServerLogger") -> str:
platform_id = PlatformUtils.get_platform_id()
runtime_dependencies = [
@@ -79,7 +79,7 @@ class DartLanguageServer(SolidLanguageServer):
assert len(runtime_dependencies) == 1
dependency = runtime_dependencies[0]
dart_ls_dir = os.path.join(os.path.dirname(__file__), "static", "dart-language-server")
dart_ls_dir = cls.ls_resources_dir()
dart_executable_path = os.path.join(dart_ls_dir, dependency["binaryName"])
if not os.path.exists(dart_ls_dir):
+6 -10
View File
@@ -152,8 +152,8 @@ class EclipseJDTLS(SolidLanguageServer):
"lib", # General
]
@staticmethod
def _setupRuntimeDependencies(logger: LanguageServerLogger, config: LanguageServerConfig) -> RuntimeDependencyPaths:
@classmethod
def _setupRuntimeDependencies(cls, logger: LanguageServerLogger, config: LanguageServerConfig) -> RuntimeDependencyPaths:
"""
Setup runtime dependencies for EclipseJDTLS and return the paths.
"""
@@ -231,8 +231,6 @@ class EclipseJDTLS(SolidLanguageServer):
},
}
os.makedirs(str(PurePath(os.path.abspath(os.path.dirname(__file__)), "static")), exist_ok=True)
# assert platformId.value in [
# "linux-x64",
# "win-x64",
@@ -240,8 +238,8 @@ class EclipseJDTLS(SolidLanguageServer):
gradle_path = str(
PurePath(
os.path.abspath(os.path.dirname(__file__)),
"static/gradle-7.3.3",
cls.ls_resources_dir(),
"gradle-7.3.3",
)
)
@@ -256,7 +254,7 @@ class EclipseJDTLS(SolidLanguageServer):
assert os.path.exists(gradle_path)
dependency = runtime_dependencies["vscode-java"][platformId.value]
vscode_java_path = str(PurePath(os.path.abspath(os.path.dirname(__file__)), "static", dependency["relative_extraction_path"]))
vscode_java_path = str(PurePath(cls.ls_resources_dir(), dependency["relative_extraction_path"]))
os.makedirs(vscode_java_path, exist_ok=True)
jre_home_path = str(PurePath(vscode_java_path, dependency["jre_home_path"]))
jre_path = str(PurePath(vscode_java_path, dependency["jre_path"]))
@@ -285,9 +283,7 @@ class EclipseJDTLS(SolidLanguageServer):
assert os.path.exists(jdtls_readonly_config_path)
dependency = runtime_dependencies["intellicode"]["platform-agnostic"]
intellicode_directory_path = str(
PurePath(os.path.abspath(os.path.dirname(__file__)), "static", dependency["relative_extraction_path"])
)
intellicode_directory_path = str(PurePath(cls.ls_resources_dir(), dependency["relative_extraction_path"]))
os.makedirs(intellicode_directory_path, exist_ok=True)
intellicode_jar_path = str(PurePath(intellicode_directory_path, dependency["intellicode_jar_path"]))
intellisense_members_path = str(PurePath(intellicode_directory_path, dependency["intellisense_members_path"]))
@@ -32,8 +32,8 @@ class Intelephense(SolidLanguageServer):
# - cache: commonly used for caching
return super().is_ignored_dirname(dirname) or dirname in ["node_modules", "vendor", "cache"]
@staticmethod
def _setup_runtime_dependencies(logger: LanguageServerLogger, config: LanguageServerConfig) -> str:
@classmethod
def _setup_runtime_dependencies(cls, logger: LanguageServerLogger, config: LanguageServerConfig) -> str:
"""
Setup runtime dependencies for Intelephense and return the command to start the server.
"""
@@ -57,7 +57,7 @@ class Intelephense(SolidLanguageServer):
assert is_npm_installed, "npm is not installed or isn't in PATH. Please install npm and try again."
# Install intelephense if not already installed
intelephense_ls_dir = os.path.join(os.path.dirname(__file__), "static", "php-lsp")
intelephense_ls_dir = os.path.join(cls.ls_resources_dir(), "php-lsp")
os.makedirs(intelephense_ls_dir, exist_ok=True)
intelephense_executable_path = os.path.join(intelephense_ls_dir, "node_modules", ".bin", "intelephense")
if not os.path.exists(intelephense_executable_path):
@@ -53,8 +53,8 @@ class KotlinLanguageServer(SolidLanguageServer):
"kotlin",
)
@staticmethod
def _setup_runtime_dependencies(logger: LanguageServerLogger, config: LanguageServerConfig) -> KotlinRuntimeDependencyPaths:
@classmethod
def _setup_runtime_dependencies(cls, logger: LanguageServerLogger, config: LanguageServerConfig) -> KotlinRuntimeDependencyPaths:
"""
Setup runtime dependencies for Kotlin Language Server and return the paths.
"""
@@ -111,7 +111,7 @@ class KotlinLanguageServer(SolidLanguageServer):
java_dependency = runtime_dependencies["java"][platform_id.value]
# Setup paths for dependencies
static_dir = os.path.join(os.path.dirname(__file__), "static", "kotlin_language_server")
static_dir = os.path.join(cls.ls_resources_dir(), "kotlin_language_server")
os.makedirs(static_dir, exist_ok=True)
# Setup Java paths
+5 -5
View File
@@ -63,7 +63,7 @@ class OmniSharp(SolidLanguageServer):
"""
Creates an OmniSharp instance. This class is not meant to be instantiated directly. Use LanguageServer.create() instead.
"""
omnisharp_executable_path, dll_path = self.setupRuntimeDependencies(logger, config)
omnisharp_executable_path, dll_path = self._setup_runtime_dependencies(logger, config)
slnfilename = find_least_depth_sln_file(repository_root_path)
if slnfilename is None:
@@ -137,8 +137,8 @@ class OmniSharp(SolidLanguageServer):
return d
@staticmethod
def setupRuntimeDependencies(logger: LanguageServerLogger, config: LanguageServerConfig) -> tuple[str, str]:
@classmethod
def _setup_runtime_dependencies(cls, logger: LanguageServerLogger, config: LanguageServerConfig) -> tuple[str, str]:
"""
Setup runtime dependencies for OmniSharp.
"""
@@ -181,7 +181,7 @@ class OmniSharp(SolidLanguageServer):
assert "OmniSharp" in runtime_dependencies
assert "RazorOmnisharp" in runtime_dependencies
omnisharp_ls_dir = os.path.join(os.path.dirname(__file__), "static", "OmniSharp")
omnisharp_ls_dir = os.path.join(cls.ls_resources_dir(), "OmniSharp")
if not os.path.exists(omnisharp_ls_dir):
os.makedirs(omnisharp_ls_dir)
FileUtils.download_and_extract_archive(logger, runtime_dependencies["OmniSharp"]["url"], omnisharp_ls_dir, "zip")
@@ -189,7 +189,7 @@ class OmniSharp(SolidLanguageServer):
assert os.path.exists(omnisharp_executable_path)
os.chmod(omnisharp_executable_path, stat.S_IEXEC)
razor_omnisharp_ls_dir = os.path.join(os.path.dirname(__file__), "static", "RazorOmnisharp")
razor_omnisharp_ls_dir = os.path.join(cls.ls_resources_dir(), "RazorOmnisharp")
if not os.path.exists(razor_omnisharp_ls_dir):
os.makedirs(razor_omnisharp_ls_dir)
FileUtils.download_and_extract_archive(logger, runtime_dependencies["RazorOmnisharp"]["url"], razor_omnisharp_ls_dir, "zip")
@@ -44,8 +44,8 @@ class RustAnalyzer(SolidLanguageServer):
def is_ignored_dirname(self, dirname: str) -> bool:
return super().is_ignored_dirname(dirname) or dirname in ["target"]
@staticmethod
def _setup_runtime_dependencies(logger: LanguageServerLogger, config: LanguageServerConfig) -> str:
@classmethod
def _setup_runtime_dependencies(cls, logger: LanguageServerLogger, config: LanguageServerConfig) -> str:
"""
Setup runtime dependencies for rust_analyzer and return the command to start the server.
"""
@@ -87,7 +87,7 @@ class RustAnalyzer(SolidLanguageServer):
assert len(runtime_dependencies) == 1
dependency = runtime_dependencies[0]
rustanalyzer_ls_dir = os.path.join(os.path.dirname(__file__), "static", "RustAnalyzer")
rustanalyzer_ls_dir = os.path.join(cls.ls_resources_dir(), "RustAnalyzer")
rustanalyzer_executable_path = os.path.join(rustanalyzer_ls_dir, dependency["binaryName"])
if not os.path.exists(rustanalyzer_ls_dir):
os.makedirs(rustanalyzer_ls_dir)
@@ -63,9 +63,8 @@ class TerraformLS(SolidLanguageServer):
else:
raise RuntimeError(f"terraform version command failed with return code {result.returncode}: {result.stderr}")
# Note: needs to remain static because it's called before init is complete
@staticmethod
def _setup_runtime_dependencies(logger: LanguageServerLogger) -> str:
@classmethod
def _setup_runtime_dependencies(cls, logger: LanguageServerLogger) -> str:
"""
Setup runtime dependencies for terraform-ls.
Downloads and installs terraform-ls if not already present.
@@ -121,12 +120,8 @@ class TerraformLS(SolidLanguageServer):
), f"Expected exactly one runtime dependency for platform {platform_id.value}, found {len(runtime_dependencies)}"
dependency = runtime_dependencies[0]
terraform_ls_dir = os.path.join(os.path.dirname(__file__), "static", "terraform-ls")
terraform_ls_dir = os.path.join(cls.ls_resources_dir(), "terraform-ls")
terraform_ls_executable_path = os.path.join(terraform_ls_dir, dependency["binaryName"])
if not os.path.exists(terraform_ls_dir):
os.makedirs(terraform_ls_dir)
if not os.path.exists(terraform_ls_executable_path):
logger.log(f"Downloading terraform-ls from {dependency['url']}", logging.INFO)
FileUtils.download_and_extract_archive(logger, dependency["url"], terraform_ls_dir, dependency["archiveType"])
@@ -64,8 +64,8 @@ class TypeScriptLanguageServer(SolidLanguageServer):
"coverage",
]
@staticmethod
def _setup_runtime_dependencies(logger: LanguageServerLogger, config: LanguageServerConfig) -> str:
@classmethod
def _setup_runtime_dependencies(cls, logger: LanguageServerLogger, config: LanguageServerConfig) -> str:
"""
Setup runtime dependencies for TypeScript Language Server and return the command to start the server.
"""
@@ -94,7 +94,7 @@ class TypeScriptLanguageServer(SolidLanguageServer):
"command": "npm install --prefix ./ typescript-language-server@4.3.3",
},
]
tsserver_ls_dir = os.path.join(os.path.dirname(__file__), "static", "ts-lsp")
tsserver_ls_dir = os.path.join(cls.ls_resources_dir(), "ts-lsp")
tsserver_executable_path = os.path.join(tsserver_ls_dir, "typescript-language-server")
# Verify both node and npm are installed