diff options
| author | Veetaha <gerzoh1@gmail.com> | 2020-03-09 19:54:40 +0200 |
|---|---|---|
| committer | Veetaha <gerzoh1@gmail.com> | 2020-03-14 02:01:46 +0200 |
| commit | 8203828bb081faae4cd9d39c8abe6bc073138176 (patch) | |
| tree | fb6f290c58677e3109e4ecbca424258f09d7fea7 /editors/code/src | |
| parent | fab40db8bdfdac5cde5789f74d1ec28e60a8bb7e (diff) | |
| download | rust-8203828bb081faae4cd9d39c8abe6bc073138176.tar.gz rust-8203828bb081faae4cd9d39c8abe6bc073138176.zip | |
vscode-prerefactor: merge two files into downloads.ts
Diffstat (limited to 'editors/code/src')
| -rw-r--r-- | editors/code/src/installation/download_artifact.ts | 50 | ||||
| -rw-r--r-- | editors/code/src/installation/downloads.ts (renamed from editors/code/src/installation/download_file.ts) | 46 |
2 files changed, 46 insertions, 50 deletions
diff --git a/editors/code/src/installation/download_artifact.ts b/editors/code/src/installation/download_artifact.ts deleted file mode 100644 index 97e4d67c21d..00000000000 --- a/editors/code/src/installation/download_artifact.ts +++ /dev/null @@ -1,50 +0,0 @@ -import * as vscode from "vscode"; -import * as path from "path"; -import { promises as fs } from "fs"; - -import { ArtifactReleaseInfo } from "./interfaces"; -import { downloadFile } from "./download_file"; -import { assert } from "../util"; - -/** - * Downloads artifact from given `downloadUrl`. - * Creates `installationDir` if it is not yet created and put the artifact under - * `artifactFileName`. - * Displays info about the download progress in an info message printing the name - * of the artifact as `displayName`. - */ -export async function downloadArtifact( - { downloadUrl, releaseName }: ArtifactReleaseInfo, - artifactFileName: string, - installationDir: string, - displayName: string, -) { - await fs.mkdir(installationDir).catch(err => assert( - err?.code === "EEXIST", - `Couldn't create directory "${installationDir}" to download ` + - `${artifactFileName} artifact: ${err?.message}` - )); - - const installationPath = path.join(installationDir, artifactFileName); - - await vscode.window.withProgress( - { - location: vscode.ProgressLocation.Notification, - cancellable: false, // FIXME: add support for canceling download? - title: `Downloading ${displayName} (${releaseName})` - }, - async (progress, _cancellationToken) => { - let lastPrecentage = 0; - const filePermissions = 0o755; // (rwx, r_x, r_x) - await downloadFile(downloadUrl, installationPath, filePermissions, (readBytes, totalBytes) => { - const newPercentage = (readBytes / totalBytes) * 100; - progress.report({ - message: newPercentage.toFixed(0) + "%", - increment: newPercentage - lastPrecentage - }); - - lastPrecentage = newPercentage; - }); - } - ); -} diff --git a/editors/code/src/installation/download_file.ts b/editors/code/src/installation/downloads.ts index ee8949d61c4..7ce2e2960f2 100644 --- a/editors/code/src/installation/download_file.ts +++ b/editors/code/src/installation/downloads.ts @@ -1,8 +1,11 @@ import fetch from "node-fetch"; +import * as vscode from "vscode"; +import * as path from "path"; import * as fs from "fs"; import * as stream from "stream"; import * as util from "util"; import { log, assert } from "../util"; +import { ArtifactReleaseInfo } from "./interfaces"; const pipeline = util.promisify(stream.pipeline); @@ -49,3 +52,46 @@ export async function downloadFile( // Issue at nodejs repo: https://github.com/nodejs/node/issues/31776 }); } + +/** + * Downloads artifact from given `downloadUrl`. + * Creates `installationDir` if it is not yet created and puts the artifact under + * `artifactFileName`. + * Displays info about the download progress in an info message printing the name + * of the artifact as `displayName`. + */ +export async function downloadArtifactWithProgressUi( + { downloadUrl, releaseName }: ArtifactReleaseInfo, + artifactFileName: string, + installationDir: string, + displayName: string, +) { + await fs.promises.mkdir(installationDir).catch(err => assert( + err?.code === "EEXIST", + `Couldn't create directory "${installationDir}" to download ` + + `${artifactFileName} artifact: ${err?.message}` + )); + + const installationPath = path.join(installationDir, artifactFileName); + + await vscode.window.withProgress( + { + location: vscode.ProgressLocation.Notification, + cancellable: false, // FIXME: add support for canceling download? + title: `Downloading rust-analyzer ${displayName} (${releaseName})` + }, + async (progress, _cancellationToken) => { + let lastPrecentage = 0; + const filePermissions = 0o755; // (rwx, r_x, r_x) + await downloadFile(downloadUrl, installationPath, filePermissions, (readBytes, totalBytes) => { + const newPercentage = (readBytes / totalBytes) * 100; + progress.report({ + message: newPercentage.toFixed(0) + "%", + increment: newPercentage - lastPrecentage + }); + + lastPrecentage = newPercentage; + }); + } + ); +} |
