production-taskbar-client / build / beforePackHook.js
beforePackHook.js
Raw
const fs = require("fs");
const log = require("electron-log");
const { valid } = require("semver");

const AtLeastWin7 = "6.1.7601";
// const AtLeastWin10 = "10.0.10240";

log.transports.console.format =
  "[{y}-{m}-{d} {h}:{i}:{s}.{ms}] [beforePackHook] [{level}] {text}";

exports.default = async function beforePackHook({ arch, packager }) {
  // Validate package.json version
  const packageJson = JSON.parse(fs.readFileSync("package.json"));
  if (!valid(packageJson.version)) {
    log.error(
      `App version is not a valid semver version: ${packageJson.version}`
    );
    process.exit(1);
  }

  // add json data about build as notes for latest.yml
  log.info(`Generating release-notes.md...`);
  const notes = {
    minWinVersion: AtLeastWin7,
    electronVersion: packager.config.electronVersion,
    arch: arch ? "x64" : "ia32",
  };
  fs.writeFileSync("./packages/release-notes.md", JSON.stringify(notes));

  // check required dist files
  log.info(`Checking if required files successfully bundled...`);
  let isCheckPassed = true;
  const files = [
    "./dist/main.js",
    "./dist/preload.js",
    "./dist/renderer/index.html",
    "./dist/renderer/js/renderer.js",
    "./dist/workers/winEventHook.js",
    "./dist/workers/autoswitchWorker.js",
    "./bin/win-control-server.exe",
    "./bin/win-key-server.exe",
  ];

  Object.values(files).forEach((file) => {
    try {
      if (!fs.existsSync(file)) {
        log.error(`${file} not exists!`);
        isCheckPassed = false;
      }
    } catch (e) {
      log.error(e);
      process.exit(1);
    }
  });
  if (!isCheckPassed) process.exit(1);
  log.info(`All files checked!`);
};