From c19b73a84ca6305394915f157f7f04b4b2b52100 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jo=C3=A3o=20Victor=20Tozatti=20Risso?= <jvtr12@inf.ufpr.br>
Date: Tue, 22 Nov 2016 11:50:21 -0200
Subject: [PATCH] Add middleware to check for the appropriate Node version

- Add middleware to check for the appropriate Node version. This relies on the
engines.node flag being set on package.json.
---
 src/libs/middlewares/checkVersion.js | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)
 create mode 100644 src/libs/middlewares/checkVersion.js

diff --git a/src/libs/middlewares/checkVersion.js b/src/libs/middlewares/checkVersion.js
new file mode 100644
index 00000000..c3187adb
--- /dev/null
+++ b/src/libs/middlewares/checkVersion.js
@@ -0,0 +1,22 @@
+const curPath = process.cwd();
+const libs = `${process.cwd()}/libs`;
+const log = require(`${libs}/log`)(module);
+const chalk = require('chalk');
+const packageConf = require(`${curPath}/package.json`);
+
+module.exports = () => {
+    // Parse version number from strings such as 'v4.2.0' or `>=4.0.0'
+    function parseVersionNumber(versionString) {
+        return parseFloat(versionString.replace(/[^\d\.]/g, ''));
+    }
+    // Ensure minimum supported node version is used
+    const minNodeVersion = parseVersionNumber(packageConf.engines.node);
+    const currentNodeVersion = parseVersionNumber(process.version);
+    if (minNodeVersion > currentNodeVersion) {
+        log.error(chalk.red(`You must upgrade node to >=${minNodeVersion}.x to use simcaq-node!`));
+        return false;
+    } else {
+        log.info('Node version should work!');
+        return true;
+    }
+};
-- 
GitLab