aboutsummaryrefslogtreecommitdiff
path: root/editors/code/src/installation
diff options
context:
space:
mode:
Diffstat (limited to 'editors/code/src/installation')
-rw-r--r--editors/code/src/installation/download_artifact.ts30
-rw-r--r--editors/code/src/installation/download_file.ts3
-rw-r--r--editors/code/src/installation/server.ts3
3 files changed, 14 insertions, 22 deletions
diff --git a/editors/code/src/installation/download_artifact.ts b/editors/code/src/installation/download_artifact.ts
index 356723aba..97e4d67c2 100644
--- a/editors/code/src/installation/download_artifact.ts
+++ b/editors/code/src/installation/download_artifact.ts
@@ -1,11 +1,10 @@
1import * as vscode from "vscode"; 1import * as vscode from "vscode";
2import * as path from "path"; 2import * as path from "path";
3import { promises as fs } from "fs"; 3import { promises as fs } from "fs";
4import { strict as assert } from "assert";
5 4
6import { ArtifactReleaseInfo } from "./interfaces"; 5import { ArtifactReleaseInfo } from "./interfaces";
7import { downloadFile } from "./download_file"; 6import { downloadFile } from "./download_file";
8import { throttle } from "throttle-debounce"; 7import { assert } from "../util";
9 8
10/** 9/**
11 * Downloads artifact from given `downloadUrl`. 10 * Downloads artifact from given `downloadUrl`.
@@ -20,11 +19,10 @@ export async function downloadArtifact(
20 installationDir: string, 19 installationDir: string,
21 displayName: string, 20 displayName: string,
22) { 21) {
23 await fs.mkdir(installationDir).catch(err => assert.strictEqual( 22 await fs.mkdir(installationDir).catch(err => assert(
24 err?.code, 23 err?.code === "EEXIST",
25 "EEXIST",
26 `Couldn't create directory "${installationDir}" to download ` + 24 `Couldn't create directory "${installationDir}" to download ` +
27 `${artifactFileName} artifact: ${err.message}` 25 `${artifactFileName} artifact: ${err?.message}`
28 )); 26 ));
29 27
30 const installationPath = path.join(installationDir, artifactFileName); 28 const installationPath = path.join(installationDir, artifactFileName);
@@ -38,19 +36,15 @@ export async function downloadArtifact(
38 async (progress, _cancellationToken) => { 36 async (progress, _cancellationToken) => {
39 let lastPrecentage = 0; 37 let lastPrecentage = 0;
40 const filePermissions = 0o755; // (rwx, r_x, r_x) 38 const filePermissions = 0o755; // (rwx, r_x, r_x)
41 await downloadFile(downloadUrl, installationPath, filePermissions, throttle( 39 await downloadFile(downloadUrl, installationPath, filePermissions, (readBytes, totalBytes) => {
42 200, 40 const newPercentage = (readBytes / totalBytes) * 100;
43 /* noTrailing: */ true, 41 progress.report({
44 (readBytes, totalBytes) => { 42 message: newPercentage.toFixed(0) + "%",
45 const newPercentage = (readBytes / totalBytes) * 100; 43 increment: newPercentage - lastPrecentage
46 progress.report({ 44 });
47 message: newPercentage.toFixed(0) + "%",
48 increment: newPercentage - lastPrecentage
49 });
50 45
51 lastPrecentage = newPercentage; 46 lastPrecentage = newPercentage;
52 }) 47 });
53 );
54 } 48 }
55 ); 49 );
56} 50}
diff --git a/editors/code/src/installation/download_file.ts b/editors/code/src/installation/download_file.ts
index 319cb995c..ee8949d61 100644
--- a/editors/code/src/installation/download_file.ts
+++ b/editors/code/src/installation/download_file.ts
@@ -2,8 +2,7 @@ import fetch from "node-fetch";
2import * as fs from "fs"; 2import * as fs from "fs";
3import * as stream from "stream"; 3import * as stream from "stream";
4import * as util from "util"; 4import * as util from "util";
5import { strict as assert } from "assert"; 5import { log, assert } from "../util";
6import { log } from "../util";
7 6
8const pipeline = util.promisify(stream.pipeline); 7const pipeline = util.promisify(stream.pipeline);
9 8
diff --git a/editors/code/src/installation/server.ts b/editors/code/src/installation/server.ts
index cb5e56844..6a6cf4f8c 100644
--- a/editors/code/src/installation/server.ts
+++ b/editors/code/src/installation/server.ts
@@ -1,13 +1,12 @@
1import * as vscode from "vscode"; 1import * as vscode from "vscode";
2import * as path from "path"; 2import * as path from "path";
3import { strict as assert } from "assert";
4import { promises as dns } from "dns"; 3import { promises as dns } from "dns";
5import { spawnSync } from "child_process"; 4import { spawnSync } from "child_process";
6 5
7import { BinarySource } from "./interfaces"; 6import { BinarySource } from "./interfaces";
8import { fetchArtifactReleaseInfo } from "./fetch_artifact_release_info"; 7import { fetchArtifactReleaseInfo } from "./fetch_artifact_release_info";
9import { downloadArtifact } from "./download_artifact"; 8import { downloadArtifact } from "./download_artifact";
10import { log } from "../util"; 9import { log, assert } from "../util";
11 10
12export async function ensureServerBinary(source: null | BinarySource): Promise<null | string> { 11export async function ensureServerBinary(source: null | BinarySource): Promise<null | string> {
13 if (!source) { 12 if (!source) {