All files / src/lib/forge/hooks after-copy.js

0% Statements 0/21
0% Branches 0/2
0% Functions 0/9
0% Lines 0/21

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63                                                                                                                             
const fs = require("fs-extra");
const Path = require("path");
const glob = require("glob").sync;
 
const disallowedFiles = [".DS_Store"];
 
const disallowedDirs = [
  "appData/engine/gbvm/test",
  "appData/engine/gbvm/examples",
  "gbdk/examples",
];
 
const isAllowedPath = (inputPath, disallowedPaths) => {
  const normalizedInput = Path.normalize(inputPath).replace(/\\/g, "/");
  return !disallowedPaths.some((p) =>
    normalizedInput.includes(Path.normalize(p).replace(/\\/g, "/")),
  );
};
 
function fileFilter(src, dest) {
  const filename = Path.basename(src);
  return (
    disallowedFiles.indexOf(filename) === -1 &&
    isAllowedPath(src, disallowedDirs)
  );
}
 
function afterCopy(buildPath, electronVersion, platform, arch, callback) {
  // Called from packagerConfig in forge.config.js
  // Copies correct build Tools for architecture + dynamically loaded js/json files
  const copyPaths = [
    "/buildTools/" + platform + "-" + arch,
    "/appData/",
    "/src/lang",
    "/src/lib/events",
    "/src/assets",
  ];
 
  Promise.all(
    copyPaths.map((dir) => {
      return fs.copy(__dirname + "/../../../.." + dir, buildPath + dir, {
        filter: fileFilter,
      });
    }),
  )
    .then(() => {
      const dynamicChunks = glob(__dirname + "/.webpack/renderer/[0-9]");
      return Promise.all(
        dynamicChunks.map((dynamicChunk) => {
          const outputPath =
            buildPath +
            "/.webpack/renderer/main_window/" +
            Path.basename(dynamicChunk);
          return fs.copy(dynamicChunk, outputPath, { filter: fileFilter });
        }),
      );
    })
    .then(() => callback())
    .catch((err) => callback(err));
}
 
module.exports = afterCopy;