diff --git a/editors/code/src/client.ts b/editors/code/src/client.ts index dcf9d0c0673..12c97be2fee 100644 --- a/editors/code/src/client.ts +++ b/editors/code/src/client.ts @@ -2,7 +2,7 @@ import * as lc from 'vscode-languageclient'; import * as vscode from 'vscode'; import { Config } from './config'; -import { ensureLanguageServerBinary } from './installation/language_server'; +import { ensureServerBinary } from './installation/server'; import { CallHierarchyFeature } from 'vscode-languageclient/lib/callHierarchy.proposed'; export async function createClient(config: Config): Promise { @@ -11,11 +11,11 @@ export async function createClient(config: Config): Promise("raLspServerPath"); + get serverBinarySource(): null | BinarySource { + const serverPath = RA_LSP_DEBUG ?? this.cfg.get("raLspServerPath"); - if (langServerPath) { + if (serverPath) { return { type: BinarySource.Type.ExplicitPath, - path: Config.replaceTildeWithHomeDir(langServerPath) + path: Config.replaceTildeWithHomeDir(serverPath) }; } - const prebuiltBinaryName = this.prebuiltLangServerFileName; + const prebuiltBinaryName = this.prebuiltServerFileName; if (!prebuiltBinaryName) return null; diff --git a/editors/code/src/installation/fetch_latest_artifact_metadata.ts b/editors/code/src/installation/fetch_latest_artifact_release_info.ts similarity index 89% rename from editors/code/src/installation/fetch_latest_artifact_metadata.ts rename to editors/code/src/installation/fetch_latest_artifact_release_info.ts index 7e370060313..29ee029a708 100644 --- a/editors/code/src/installation/fetch_latest_artifact_metadata.ts +++ b/editors/code/src/installation/fetch_latest_artifact_release_info.ts @@ -1,5 +1,5 @@ import fetch from "node-fetch"; -import { GithubRepo, ArtifactMetadata } from "./interfaces"; +import { GithubRepo, ArtifactReleaseInfo } from "./interfaces"; const GITHUB_API_ENDPOINT_URL = "https://api.github.com"; @@ -7,9 +7,9 @@ const GITHUB_API_ENDPOINT_URL = "https://api.github.com"; * Fetches the latest release from GitHub `repo` and returns metadata about * `artifactFileName` shipped with this release or `null` if no such artifact was published. */ -export async function fetchLatestArtifactMetadata( +export async function fetchLatestArtifactReleaseInfo( repo: GithubRepo, artifactFileName: string -): Promise { +): Promise { const repoOwner = encodeURIComponent(repo.owner); const repoName = encodeURIComponent(repo.name); diff --git a/editors/code/src/installation/interfaces.ts b/editors/code/src/installation/interfaces.ts index 8039d0b90f6..93ea577d4a6 100644 --- a/editors/code/src/installation/interfaces.ts +++ b/editors/code/src/installation/interfaces.ts @@ -6,7 +6,7 @@ export interface GithubRepo { /** * Metadata about particular artifact retrieved from GitHub releases. */ -export interface ArtifactMetadata { +export interface ArtifactReleaseInfo { releaseName: string; downloadUrl: string; } diff --git a/editors/code/src/installation/language_server.ts b/editors/code/src/installation/server.ts similarity index 85% rename from editors/code/src/installation/language_server.ts rename to editors/code/src/installation/server.ts index 4797c3f01ad..406e2299c3b 100644 --- a/editors/code/src/installation/language_server.ts +++ b/editors/code/src/installation/server.ts @@ -7,13 +7,13 @@ import { spawnSync } from "child_process"; import { throttle } from "throttle-debounce"; import { BinarySource } from "./interfaces"; -import { fetchLatestArtifactMetadata } from "./fetch_latest_artifact_metadata"; +import { fetchLatestArtifactReleaseInfo } from "./fetch_latest_artifact_release_info"; import { downloadFile } from "./download_file"; -export async function downloadLatestLanguageServer( +export async function downloadLatestServer( {file: artifactFileName, dir: installationDir, repo}: BinarySource.GithubRelease ) { - const { releaseName, downloadUrl } = (await fetchLatestArtifactMetadata( + const { releaseName, downloadUrl } = (await fetchLatestArtifactReleaseInfo( repo, artifactFileName ))!; @@ -53,11 +53,11 @@ export async function downloadLatestLanguageServer( ); console.timeEnd("Downloading ra_lsp_server"); } -export async function ensureLanguageServerBinary( - langServerSource: null | BinarySource +export async function ensureServerBinary( + serverSource: null | BinarySource ): Promise { - if (!langServerSource) { + if (!serverSource) { vscode.window.showErrorMessage( "Unfortunately we don't ship binaries for your platform yet. " + "You need to manually clone rust-analyzer repository and " + @@ -69,21 +69,21 @@ export async function ensureLanguageServerBinary( return null; } - switch (langServerSource.type) { + switch (serverSource.type) { case BinarySource.Type.ExplicitPath: { - if (isBinaryAvailable(langServerSource.path)) { - return langServerSource.path; + if (isBinaryAvailable(serverSource.path)) { + return serverSource.path; } vscode.window.showErrorMessage( - `Unable to run ${langServerSource.path} binary. ` + + `Unable to run ${serverSource.path} binary. ` + `To use the pre-built language server, set "rust-analyzer.raLspServerPath" ` + "value to `null` or remove it from the settings to use it by default." ); return null; } case BinarySource.Type.GithubRelease: { - const prebuiltBinaryPath = path.join(langServerSource.dir, langServerSource.file); + const prebuiltBinaryPath = path.join(serverSource.dir, serverSource.file); if (isBinaryAvailable(prebuiltBinaryPath)) { return prebuiltBinaryPath; @@ -97,10 +97,10 @@ export async function ensureLanguageServerBinary( if (userResponse !== "Download now") return null; try { - await downloadLatestLanguageServer(langServerSource); + await downloadLatestServer(serverSource); } catch (err) { vscode.window.showErrorMessage( - `Failed to download language server from ${langServerSource.repo.name} ` + + `Failed to download language server from ${serverSource.repo.name} ` + `GitHub repository: ${err.message}` ); @@ -122,7 +122,7 @@ export async function ensureLanguageServerBinary( if (!isBinaryAvailable(prebuiltBinaryPath)) assert(false, `Downloaded language server binary is not functional.` + - `Downloaded from: ${JSON.stringify(langServerSource)}` + `Downloaded from: ${JSON.stringify(serverSource)}` );