Browse Source

fix: Handle an electron.d.ts file in a custom build (#33979)

* Handle an electron.d.ts file in a custom build

* Fix linter issues

Co-authored-by: Felix Rieseberg <[email protected]>
Felix Rieseberg 2 years ago
parent
commit
74d59af3c5
1 changed files with 24 additions and 2 deletions
  1. 24 2
      npm/install.js

+ 24 - 2
npm/install.js

@@ -70,8 +70,30 @@ function isInstalled () {
 
 // unzips and makes path.txt point at the correct executable
 function extractFile (zipPath) {
-  return extract(zipPath, { dir: path.join(__dirname, 'dist') })
-    .then(() => fs.promises.writeFile(path.join(__dirname, 'path.txt'), platformPath));
+  return new Promise((resolve, reject) => {
+    const distPath = process.env.ELECTRON_OVERRIDE_DIST_PATH || path.join(__dirname, 'dist');
+
+    extract(zipPath, { dir: path.join(__dirname, 'dist') })
+      .then(() => {
+        // If the zip contains an "electron.d.ts" file,
+        // move that up
+        const srcTypeDefPath = path.join(distPath, 'electron.d.ts');
+        const targetTypeDefPath = path.join(__dirname, 'electron.d.ts');
+        const hasTypeDefinitions = fs.existsSync(srcTypeDefPath);
+
+        if (hasTypeDefinitions) {
+          try {
+            fs.renameSync(srcTypeDefPath, targetTypeDefPath);
+          } catch (err) {
+            reject(err);
+          }
+        }
+
+        // Write a "path.txt" file.
+        return fs.promises.writeFile(path.join(__dirname, 'path.txt'), platformPath);
+      })
+      .catch((err) => reject(err));
+  });
 }
 
 function getPlatformPath () {