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
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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
|