You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

119 lines
9.6 KiB

"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: '0.23.3 || 0.24.6 || >= 1.0.0',
darwin: '0.27.5',
linux: '0.27.5',
};
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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