diff options
-rw-r--r-- | editors/code/src/installation/download_file.ts | 2 | ||||
-rw-r--r-- | editors/code/src/installation/fetch_latest_artifact_metadata.ts | 2 | ||||
-rw-r--r-- | editors/code/src/installation/language_server.ts | 27 |
3 files changed, 26 insertions, 5 deletions
diff --git a/editors/code/src/installation/download_file.ts b/editors/code/src/installation/download_file.ts index 53bf46d78..b51602ef9 100644 --- a/editors/code/src/installation/download_file.ts +++ b/editors/code/src/installation/download_file.ts | |||
@@ -20,6 +20,8 @@ export async function downloadFile( | |||
20 | 20 | ||
21 | let readBytes = 0; | 21 | let readBytes = 0; |
22 | 22 | ||
23 | console.log("Downloading file of", totalBytes, "bytes size from", url, "to", destFilePath); | ||
24 | |||
23 | return new Promise<void>((resolve, reject) => response.body | 25 | return new Promise<void>((resolve, reject) => response.body |
24 | .on("data", (chunk: Buffer) => { | 26 | .on("data", (chunk: Buffer) => { |
25 | readBytes += chunk.length; | 27 | readBytes += chunk.length; |
diff --git a/editors/code/src/installation/fetch_latest_artifact_metadata.ts b/editors/code/src/installation/fetch_latest_artifact_metadata.ts index 9141c92ef..7e3700603 100644 --- a/editors/code/src/installation/fetch_latest_artifact_metadata.ts +++ b/editors/code/src/installation/fetch_latest_artifact_metadata.ts | |||
@@ -19,6 +19,8 @@ export async function fetchLatestArtifactMetadata( | |||
19 | 19 | ||
20 | // We skip runtime type checks for simplicity (here we cast from `any` to `GithubRelease`) | 20 | // We skip runtime type checks for simplicity (here we cast from `any` to `GithubRelease`) |
21 | 21 | ||
22 | console.log("Issuing request for released artifacts metadata to", requestUrl); | ||
23 | |||
22 | const response: GithubRelease = await fetch(requestUrl, { | 24 | const response: GithubRelease = await fetch(requestUrl, { |
23 | headers: { Accept: "application/vnd.github.v3+json" } | 25 | headers: { Accept: "application/vnd.github.v3+json" } |
24 | }) | 26 | }) |
diff --git a/editors/code/src/installation/language_server.ts b/editors/code/src/installation/language_server.ts index c1f37f978..1ce67b8b2 100644 --- a/editors/code/src/installation/language_server.ts +++ b/editors/code/src/installation/language_server.ts | |||
@@ -2,6 +2,7 @@ import * as vscode from "vscode"; | |||
2 | import * as path from "path"; | 2 | import * as path from "path"; |
3 | import { strict as assert } from "assert"; | 3 | import { strict as assert } from "assert"; |
4 | import { promises as fs } from "fs"; | 4 | import { promises as fs } from "fs"; |
5 | import { promises as dns } from "dns"; | ||
5 | import { spawnSync } from "child_process"; | 6 | import { spawnSync } from "child_process"; |
6 | import { throttle } from "throttle-debounce"; | 7 | import { throttle } from "throttle-debounce"; |
7 | 8 | ||
@@ -25,6 +26,7 @@ export async function downloadLatestLanguageServer( | |||
25 | 26 | ||
26 | const installationPath = path.join(installationDir, artifactFileName); | 27 | const installationPath = path.join(installationDir, artifactFileName); |
27 | 28 | ||
29 | console.time("Downloading ra_lsp_server"); | ||
28 | await vscode.window.withProgress( | 30 | await vscode.window.withProgress( |
29 | { | 31 | { |
30 | location: vscode.ProgressLocation.Notification, | 32 | location: vscode.ProgressLocation.Notification, |
@@ -48,6 +50,7 @@ export async function downloadLatestLanguageServer( | |||
48 | ); | 50 | ); |
49 | } | 51 | } |
50 | ); | 52 | ); |
53 | console.timeEnd("Downloading ra_lsp_server"); | ||
51 | 54 | ||
52 | await fs.chmod(installationPath, 0o755); // Set (rwx, r_x, r_x) permissions | 55 | await fs.chmod(installationPath, 0o755); // Set (rwx, r_x, r_x) permissions |
53 | } | 56 | } |
@@ -101,15 +104,21 @@ export async function ensureLanguageServerBinary( | |||
101 | `Failed to download language server from ${langServerSource.repo.name} ` + | 104 | `Failed to download language server from ${langServerSource.repo.name} ` + |
102 | `GitHub repository: ${err.message}` | 105 | `GitHub repository: ${err.message}` |
103 | ); | 106 | ); |
107 | |||
108 | await dns.resolve('www.google.com').catch(err => { | ||
109 | console.error("DNS resolution failed, there might be an issue with Internet availability"); | ||
110 | console.error(err); | ||
111 | }); | ||
112 | |||
104 | return null; | 113 | return null; |
105 | } | 114 | } |
106 | 115 | ||
107 | 116 | if (!isBinaryAvailable(prebuiltBinaryPath)) assert(false, | |
108 | assert( | 117 | `Downloaded language server binary is not functional.` + |
109 | isBinaryAvailable(prebuiltBinaryPath), | 118 | `Downloaded from: ${JSON.stringify(langServerSource)}` |
110 | "Downloaded language server binary is not functional" | ||
111 | ); | 119 | ); |
112 | 120 | ||
121 | |||
113 | vscode.window.showInformationMessage( | 122 | vscode.window.showInformationMessage( |
114 | "Rust analyzer language server was successfully installed 🦀" | 123 | "Rust analyzer language server was successfully installed 🦀" |
115 | ); | 124 | ); |
@@ -119,6 +128,14 @@ export async function ensureLanguageServerBinary( | |||
119 | } | 128 | } |
120 | 129 | ||
121 | function isBinaryAvailable(binaryPath: string) { | 130 | function isBinaryAvailable(binaryPath: string) { |
122 | return spawnSync(binaryPath, ["--version"]).status === 0; | 131 | const res = spawnSync(binaryPath, ["--version"]); |
132 | |||
133 | // ACHTUNG! `res` type declaration is inherently wrong, see | ||
134 | // https://github.com/DefinitelyTyped/DefinitelyTyped/issues/42221 | ||
135 | |||
136 | console.log("Checked binary availablity via --version", res); | ||
137 | console.log(binaryPath, "--version output:", res.output?.map(String)); | ||
138 | |||
139 | return res.status === 0; | ||
123 | } | 140 | } |
124 | } | 141 | } |