From 3ca7f61a8d736d8e56f0d413b109e6e6562c0a30 Mon Sep 17 00:00:00 2001 From: wxb1ank Date: Sun, 23 May 2021 16:33:32 -0400 Subject: internal: use vscode.FileSystem API in main.ts --- editors/code/src/main.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'editors/code/src/main.ts') diff --git a/editors/code/src/main.ts b/editors/code/src/main.ts index 74ee28d24..fb9d38a14 100644 --- a/editors/code/src/main.ts +++ b/editors/code/src/main.ts @@ -160,7 +160,7 @@ export async function deactivate() { } async function bootstrap(config: Config, state: PersistentState): Promise { - await fs.mkdir(config.globalStoragePath, { recursive: true }); + await vscode.workspace.fs.createDirectory(config.globalStorageUri); if (!config.currentExtensionIsNightly) { await state.updateNightlyReleaseId(undefined); @@ -222,7 +222,7 @@ async function bootstrapExtension(config: Config, state: PersistentState): Promi const artifact = latestNightlyRelease.assets.find(artifact => artifact.name === "rust-analyzer.vsix"); assert(!!artifact, `Bad release: ${JSON.stringify(latestNightlyRelease)}`); - const dest = path.join(config.globalStoragePath, "rust-analyzer.vsix"); + const dest = path.join(config.globalStorageUri.path, "rust-analyzer.vsix"); await downloadWithRetryDialog(state, async () => { await download({ @@ -334,7 +334,7 @@ async function getServer(config: Config, state: PersistentState): Promise true, () => false); if (!exists) { await state.updateServerVersion(undefined); -- cgit v1.2.3 From 0448b7364666ba59b39bbd5564fe8a34b67b8f01 Mon Sep 17 00:00:00 2001 From: wxb1ank Date: Sun, 23 May 2021 22:37:10 -0400 Subject: migrate from `fs` to `vscode.FileSystem` API --- editors/code/src/main.ts | 30 ++++++++++++++---------------- 1 file changed, 14 insertions(+), 16 deletions(-) (limited to 'editors/code/src/main.ts') diff --git a/editors/code/src/main.ts b/editors/code/src/main.ts index fb9d38a14..f58d26215 100644 --- a/editors/code/src/main.ts +++ b/editors/code/src/main.ts @@ -1,7 +1,5 @@ import * as vscode from 'vscode'; -import * as path from "path"; import * as os from "os"; -import { promises as fs, PathLike } from "fs"; import * as commands from './commands'; import { activateInlayHints } from './inlay_hints'; @@ -222,7 +220,7 @@ async function bootstrapExtension(config: Config, state: PersistentState): Promi const artifact = latestNightlyRelease.assets.find(artifact => artifact.name === "rust-analyzer.vsix"); assert(!!artifact, `Bad release: ${JSON.stringify(latestNightlyRelease)}`); - const dest = path.join(config.globalStorageUri.path, "rust-analyzer.vsix"); + const dest = vscode.Uri.joinPath(config.globalStorageUri, "rust-analyzer.vsix"); await downloadWithRetryDialog(state, async () => { await download({ @@ -233,8 +231,8 @@ async function bootstrapExtension(config: Config, state: PersistentState): Promi }); }); - await vscode.commands.executeCommand("workbench.extensions.installExtension", vscode.Uri.file(dest)); - await fs.unlink(dest); + await vscode.commands.executeCommand("workbench.extensions.installExtension", dest); + await vscode.workspace.fs.delete(dest); await state.updateNightlyReleaseId(latestNightlyRelease.id); await state.updateLastCheck(now); @@ -259,7 +257,7 @@ async function bootstrapServer(config: Config, state: PersistentState): Promise< return path; } -async function patchelf(dest: PathLike): Promise { +async function patchelf(dest: vscode.Uri): Promise { await vscode.window.withProgress( { location: vscode.ProgressLocation.Notification, @@ -279,11 +277,11 @@ async function patchelf(dest: PathLike): Promise { ''; } `; - const origFile = dest + "-orig"; - await fs.rename(dest, origFile); + const origFile = vscode.Uri.file(dest.path + "-orig"); + await vscode.workspace.fs.rename(dest, origFile); progress.report({ message: "Patching executable", increment: 20 }); await new Promise((resolve, reject) => { - const handle = exec(`nix-build -E - --argstr srcStr '${origFile}' -o '${dest}'`, + const handle = exec(`nix-build -E - --argstr srcStr '${origFile.path}' -o '${dest.path}'`, (err, stdout, stderr) => { if (err != null) { reject(Error(stderr)); @@ -294,7 +292,7 @@ async function patchelf(dest: PathLike): Promise { handle.stdin?.write(expression); handle.stdin?.end(); }); - await fs.unlink(origFile); + await vscode.workspace.fs.delete(origFile); } ); } @@ -334,20 +332,20 @@ async function getServer(config: Config, state: PersistentState): Promise true, () => false); + const dest = vscode.Uri.joinPath(config.globalStorageUri, `rust-analyzer-${platform}${ext}`); + const exists = await vscode.workspace.fs.stat(dest).then(() => true, () => false); if (!exists) { await state.updateServerVersion(undefined); } - if (state.serverVersion === config.package.version) return dest; + if (state.serverVersion === config.package.version) return dest.path; if (config.askBeforeDownload) { const userResponse = await vscode.window.showInformationMessage( `Language server version ${config.package.version} for rust-analyzer is not installed.`, "Download now" ); - if (userResponse !== "Download now") return dest; + if (userResponse !== "Download now") return dest.path; } const releaseTag = config.package.releaseTag; @@ -374,7 +372,7 @@ async function getServer(config: Config, state: PersistentState): Promise { try { - const contents = await fs.readFile("/etc/os-release"); + const contents = (await vscode.workspace.fs.readFile(vscode.Uri.file("/etc/os-release"))).toString(); return contents.indexOf("ID=nixos") !== -1; } catch (e) { return false; -- cgit v1.2.3