From 421d2b7b70cdcdb614ee304e1611380d1b78f0b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9mie=20Astori?= Date: Wed, 22 Nov 2017 00:54:24 -0500 Subject: [PATCH] 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. --- index.js | 29 +++++++++++++++++++++++------ 1 file changed, 23 insertions(+), 6 deletions(-) diff --git a/index.js b/index.js index d1f292a3..019242b3 100755 --- a/index.js +++ b/index.js @@ -5,14 +5,31 @@ process.chdir(__dirname); // 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"); if (!require("semver").satisfies(process.version, pkg.engines.node)) { - /* eslint-disable no-console */ - console.error("=== WARNING!"); - 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"); - /* eslint-enable no-console */ + let colors; + let log; + + try { + 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");