Improve the Node version warning because why not

This makes the warning look nice and consistent with the other logs we display, while being safe to never break if a dependency/loaded file is not compatible with this version of Node.
Note that there is some ES6 syntax (`let`, arrow functions, template literals), but The Lounge has not been compatible with Node v0.10 for a very long time now.
This commit is contained in:
Jérémie Astori 2017-11-22 00:54:24 -05:00 committed by Pavel Djundik
parent 13a53706f0
commit 421d2b7b70

View File

@ -5,14 +5,31 @@
process.chdir(__dirname); process.chdir(__dirname);
// Perform node version check before loading any other files or modules // Perform node version check before loading any other files or modules
// Doing this check as soon as possible allows us to avoid ES6 parser errors or other issues // Doing this check as soon as possible allows us to avoid ES6 parser errors or
// other issues
// Try to display warnings nicely, but gracefully degrade if anything goes wrong
var pkg = require("./package.json"); var pkg = require("./package.json");
if (!require("semver").satisfies(process.version, pkg.engines.node)) { if (!require("semver").satisfies(process.version, pkg.engines.node)) {
/* eslint-disable no-console */ let colors;
console.error("=== WARNING!"); let log;
console.error("=== The oldest supported Node.js version is", pkg.engines.node);
console.error("=== We strongly encourage you to upgrade, see https://nodejs.org/en/download/package-manager/ for more details\n"); try {
/* eslint-enable no-console */ colors = require("colors/safe");
} catch (e) {
colors = {};
colors.green = colors.red = colors.bold = (x) => x;
}
try {
log = require("./src/log");
} catch (e) {
log = {};
log.warn = (msg) => console.error(`[WARN] ${msg}`); // eslint-disable-line no-console
}
log.warn(`The Lounge requires Node.js ${colors.green(pkg.engines.node)} (current version: ${colors.red(process.version)})`);
log.warn(colors.bold("We strongly encourage you to upgrade Node.js"));
log.warn("See https://nodejs.org/en/download/package-manager/ for more details");
} }
require("./src/command-line"); require("./src/command-line");