From 09981824b99a15bf6a535e6c4af09b83bf6832ec Mon Sep 17 00:00:00 2001 From: Sebastian Malton Date: Sat, 1 May 2021 11:22:33 -0400 Subject: [PATCH] Fix tar file being removed before extension install Signed-off-by: Sebastian Malton --- src/renderer/components/+extensions/extensions.tsx | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/renderer/components/+extensions/extensions.tsx b/src/renderer/components/+extensions/extensions.tsx index 5142c92eef..258017477b 100644 --- a/src/renderer/components/+extensions/extensions.tsx +++ b/src/renderer/components/+extensions/extensions.tsx @@ -172,8 +172,16 @@ async function createTempFilesAndValidate({ fileName, dataP }: InstallRequest, d // validate packages const tempFile = getExtensionPackageTemp(fileName); + let id: string | undefined = undefined; - disposer.push(() => fse.unlink(tempFile)); + disposer.push(() => { + // This is necessary so that this file is only removed on the error condition. + // if `id` is set then when the disposer is optionally called in `unpackExtension` + // this file will not be removed. + if (!id) { + fse.unlink(tempFile).catch(noop); + } + }); try { const data = await dataP; @@ -184,7 +192,8 @@ async function createTempFilesAndValidate({ fileName, dataP }: InstallRequest, d await fse.writeFile(tempFile, data); const manifest = await validatePackage(tempFile); - const id = path.join(extensionDiscovery.nodeModulesPath, manifest.name, "package.json"); + + id = path.join(extensionDiscovery.nodeModulesPath, manifest.name, "package.json"); return { fileName,