From a69f8a3db9e83b7d2f250d374eaa6bc1fa43e3bf Mon Sep 17 00:00:00 2001 From: muxator Date: Fri, 27 Jul 2018 01:51:28 +0200 Subject: [PATCH] runtime: deprecate Node <= 7. From Etherpad 1.8.0 minimum Node version will be 8 --- src/node/server.js | 5 +++++ src/node/utils/NodeVersion.js | 17 +++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/src/node/server.js b/src/node/server.js index 8972f252..9ccedfa6 100755 --- a/src/node/server.js +++ b/src/node/server.js @@ -45,6 +45,11 @@ async.waterfall([ NodeVersion.enforceMinNodeVersion('6.9.0', callback); }, + function(callback) + { + NodeVersion.checkDeprecationStatus('8.9.0', '1.8.0', callback); + }, + // load npm function(callback) { npm.load({}, function(er) { diff --git a/src/node/utils/NodeVersion.js b/src/node/utils/NodeVersion.js index bee58f02..49c1efe8 100644 --- a/src/node/utils/NodeVersion.js +++ b/src/node/utils/NodeVersion.js @@ -35,3 +35,20 @@ exports.enforceMinNodeVersion = function(minNodeVersion, callback) { callback(); } }; + +/** + * Prints a warning if running on a supported but deprecated Node version + * + * @param {String} lowestNonDeprecatedNodeVersion all Node version less than this one are deprecated + * @param {Function} epRemovalVersion Etherpad version that will remove support for deprecated Node releases + */ +exports.checkDeprecationStatus = function(lowestNonDeprecatedNodeVersion, epRemovalVersion, callback) { + const semver = require('semver'); + const currentNodeVersion = process.version; + + if (semver.lt(currentNodeVersion, lowestNonDeprecatedNodeVersion)) { + console.warn(`Support for Node ${currentNodeVersion} will be removed in Etherpad ${epRemovalVersion}. Please consider updating at least to Node ${lowestNonDeprecatedNodeVersion}`); + } + + callback(); +};