From c475bab6515a9b5ad522af2ee77d6ec46003c163 Mon Sep 17 00:00:00 2001 From: Lloyd Hilaiel <lloyd@hilaiel.com> Date: Tue, 29 Nov 2011 13:29:09 -0700 Subject: [PATCH] improve node.js version checking. eliminate DRY violation, and use semver for robust version specification and matching. nice yak, eh? --- lib/configuration.js | 16 ++++++++++------ package.json | 1 + 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/lib/configuration.js b/lib/configuration.js index 0e231f386..acb6f0a43 100644 --- a/lib/configuration.js +++ b/lib/configuration.js @@ -47,15 +47,20 @@ postprocess = require('postprocess'), path = require('path'), urlparse = require('urlparse'), secrets = require('./secrets'), -temp = require('temp'); +temp = require('temp'), +semver = require('semver'), +fs = require('fs'); // verify the proper version of node.js is in use try { - var m = /^v0.6.(\d+)$/.exec(process.version); - if (!m) throw process.version + " version not supported"; - if (!(parseInt(m[1], 10) >= 3)) throw "0.6." + m[1] + " not supported" ; + var required = 'unknown'; + // extract required node version from package.json + required = JSON.parse(fs.readFileSync(path.join(__dirname, "..", "package.json"))).engines.node; + if (!semver.satisfies(process.version, required)) throw false; } catch (e) { - process.stderr.write("node 0.6.3 required" + (e ? (" (" + e.toString() + ")") : "") + "\n"); + process.stderr.write("update node! verision " + process.version + + " is not " + required + + (e ? " (" + e + ")" : "") + "\n"); process.exit(1); } @@ -133,7 +138,6 @@ g_configs.test_mysql.database = { }; if (undefined !== process.env['NODE_EXTRA_CONFIG']) { - var fs = require('fs'); eval(fs.readFileSync(process.env['NODE_EXTRA_CONFIG']) + ''); } diff --git a/package.json b/package.json index ae77cc512..718604671 100644 --- a/package.json +++ b/package.json @@ -31,6 +31,7 @@ , "uglifycss": "0.0.4" , "node-statsd": "https://github.com/mojodna/node-statsd/tarball/2584c08fad" , "connect-logger-statsd": "0.0.1" + , "semver": "1.0.12" } , "scripts": { "postinstall": "./scripts/generate_ephemeral_keys.sh", -- GitLab