UNPKG

@electron-forge/cli

Version:

A complete tool for building modern Electron applications

117 lines 9.74 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.checkSystem = exports.checkValidPackageManagerVersion = void 0; const child_process_1 = require("child_process"); const os_1 = __importDefault(require("os")); const path_1 = __importDefault(require("path")); const core_1 = require("@electron-forge/core"); const debug_1 = __importDefault(require("debug")); const fs_extra_1 = __importDefault(require("fs-extra")); const semver_1 = __importDefault(require("semver")); const d = (0, debug_1.default)('electron-forge:check-system'); async function getGitVersion() { return new Promise((resolve) => { (0, child_process_1.exec)('git --version', (err, output) => (err ? resolve(null) : resolve(output.toString().trim().split(' ').reverse()[0]))); }); } async function checkNodeVersion() { const { engines } = await fs_extra_1.default.readJson(path_1.default.resolve(__dirname, '..', '..', 'package.json')); const versionSatisfied = semver_1.default.satisfies(process.versions.node, engines.node); if (!versionSatisfied) { throw new Error(`You are running Node.js version ${process.versions.node}, but Electron Forge requires Node.js ${engines.node}.`); } return process.versions.node; } const NPM_ALLOWLISTED_VERSIONS = { all: '^3.0.0 || ^4.0.0 || ~5.1.0 || ~5.2.0 || >= 5.4.2', darwin: '>= 5.4.0', linux: '>= 5.4.0', }; const YARN_ALLOWLISTED_VERSIONS = { all: '>= 1.0.0', }; function checkValidPackageManagerVersion(packageManager, version, allowlistedVersions) { if (!semver_1.default.valid(version)) { d(`Invalid semver-string while checking version: ${version}`); // eslint-disable-next-line @typescript-eslint/no-non-null-assertion throw new Error(`Could not check ${packageManager} version "${version}", assuming incompatible`); } if (!semver_1.default.satisfies(version, allowlistedVersions)) { throw new Error(`Incompatible version of ${packageManager} detected "${version}", must be in range ${allowlistedVersions}`); } } exports.checkValidPackageManagerVersion = checkValidPackageManagerVersion; function warnIfPackageManagerIsntAKnownGoodVersion(packageManager, version, allowlistedVersions) { const osVersions = allowlistedVersions[process.platform]; const versions = osVersions ? `${allowlistedVersions.all} || ${osVersions}` : allowlistedVersions.all; const versionString = version.toString(); checkValidPackageManagerVersion(packageManager, versionString, versions); } async function checkPackageManagerVersion() { const version = await core_1.utils.yarnOrNpmSpawn(['--version']); const versionString = version.toString().trim(); if (core_1.utils.hasYarn()) { warnIfPackageManagerIsntAKnownGoodVersion('Yarn', versionString, YARN_ALLOWLISTED_VERSIONS); return `yarn@${versionString}`; } else { warnIfPackageManagerIsntAKnownGoodVersion('NPM', versionString, NPM_ALLOWLISTED_VERSIONS); return `npm@${versionString}`; } } /** * Some people know their system is OK and don't appreciate the 800ms lag in * start up that these checks (in particular the package manager check) costs. * * Simply creating this flag file in your home directory will skip these checks * and shave ~800ms off your forge start time. * * This is specifically not documented or everyone would make it. */ const SKIP_SYSTEM_CHECK = path_1.default.resolve(os_1.default.homedir(), '.skip-forge-system-check'); async function checkSystem(task) { if (!(await fs_extra_1.default.pathExists(SKIP_SYSTEM_CHECK))) { d('checking system, create ~/.skip-forge-system-check to stop doing this'); return task.newListr([ { title: 'Checking git exists', task: async (_, task) => { const gitVersion = await getGitVersion(); if (gitVersion) { task.title = `Found git@${gitVersion}`; } else { throw new Error('Could not find git in environment'); } }, }, { title: 'Checking node version', task: async (_, task) => { const nodeVersion = await checkNodeVersion(); task.title = `Found node@${nodeVersion}`; }, }, { title: 'Checking packageManager version', task: async (_, task) => { const packageManager = await checkPackageManagerVersion(); task.title = `Found ${packageManager}`; }, }, ], { concurrent: true, exitOnError: false, rendererOptions: { collapse: true, }, }); } d('skipping system check'); return true; } exports.checkSystem = checkSystem; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2stc3lzdGVtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWwvY2hlY2stc3lzdGVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLGlEQUFxQztBQUNyQyw0Q0FBb0I7QUFDcEIsZ0RBQXdCO0FBRXhCLCtDQUEyRDtBQUUzRCxrREFBMEI7QUFDMUIsd0RBQTBCO0FBQzFCLG9EQUE0QjtBQUU1QixNQUFNLENBQUMsR0FBRyxJQUFBLGVBQUssRUFBQyw2QkFBNkIsQ0FBQyxDQUFDO0FBRS9DLEtBQUssVUFBVSxhQUFhO0lBQzFCLE9BQU8sSUFBSSxPQUFPLENBQWdCLENBQUMsT0FBTyxFQUFFLEVBQUU7UUFDNUMsSUFBQSxvQkFBSSxFQUFDLGVBQWUsRUFBRSxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVILENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVELEtBQUssVUFBVSxnQkFBZ0I7SUFDN0IsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLE1BQU0sa0JBQUUsQ0FBQyxRQUFRLENBQUMsY0FBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUFDO0lBQzNGLE1BQU0sZ0JBQWdCLEdBQUcsZ0JBQU0sQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRS9FLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtRQUNyQixN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