Unnamed repository; edit this file 'description' to name the repository.
-rw-r--r--editors/code/src/main.ts33
1 files changed, 18 insertions, 15 deletions
diff --git a/editors/code/src/main.ts b/editors/code/src/main.ts
index da04eec92b..f69b7fdf56 100644
--- a/editors/code/src/main.ts
+++ b/editors/code/src/main.ts
@@ -286,21 +286,24 @@ async function patchelf(dest: vscode.Uri): Promise<void> {
}
`;
const origFile = vscode.Uri.file(dest.fsPath + "-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.fsPath}' -o '${dest.fsPath}'`,
- (err, stdout, stderr) => {
- if (err != null) {
- reject(Error(stderr));
- } else {
- resolve(stdout);
- }
- });
- handle.stdin?.write(expression);
- handle.stdin?.end();
- });
- await vscode.workspace.fs.delete(origFile);
+ await vscode.workspace.fs.rename(dest, origFile, { overwrite: true });
+ try {
+ progress.report({ message: "Patching executable", increment: 20 });
+ await new Promise((resolve, reject) => {
+ const handle = exec(`nix-build -E - --argstr srcStr '${origFile.fsPath}' -o '${dest.fsPath}'`,
+ (err, stdout, stderr) => {
+ if (err != null) {
+ reject(Error(stderr));
+ } else {
+ resolve(stdout);
+ }
+ });
+ handle.stdin?.write(expression);
+ handle.stdin?.end();
+ });
+ } finally {
+ await vscode.workspace.fs.delete(origFile);
+ }
}
);
}