From 04feca95c7a24cc35533dd8162e8f594b7a62277 Mon Sep 17 00:00:00 2001 From: Malte Legenhausen Date: Mon, 9 Feb 2015 08:48:00 +0100 Subject: [PATCH] Semver versioning support added. Closed #17 --- lib/index.js | 24 ++++++++++++++++-------- package.json | 3 ++- 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/lib/index.js b/lib/index.js index a6d48ef5..1f1f4bea 100644 --- a/lib/index.js +++ b/lib/index.js @@ -4,22 +4,30 @@ var realFs = require('fs'); var path = require('path'); var rewire = require('rewire'); +var semver = require('semver'); var Binding = require('./binding'); var FileSystem = require('./filesystem'); -var minor = process.versions.node.split('.').slice(0, 2).join('.'); var versions = { - '0.8': 'fs-0.8.26.js', - '0.9': 'fs-0.9.12.js', - '0.10': 'fs-0.10.28.js', - '0.11': 'fs-0.11.13.js', - '0.12': 'fs-0.12.0.js' + '0.8.x': 'fs-0.8.26.js', + '0.9.x': 'fs-0.9.12.js', + '0.10.x': 'fs-0.10.28.js', + '0.11 - 0.11.14': 'fs-0.11.13.js', + '>= 0.11.15': 'fs-0.12.0.js' }; +var nodeVersion = process.versions.node; +var fsName; + +Object.keys(versions).forEach(function (version) { + if (semver.satisfies(nodeVersion, version)) { + fsName = versions[version]; + return false; + } +}); -var fsName = versions[minor]; if (!fsName) { - throw new Error('Unsupported Node version: ' + process.versions.node); + throw new Error('Unsupported Node version: ' + nodeVersion); } diff --git a/package.json b/package.json index 02c9a2d1..b12794cb 100644 --- a/package.json +++ b/package.json @@ -43,6 +43,7 @@ "bench-it": "~0.1.0" }, "dependencies": { - "rewire": "~2.0.0" + "rewire": "~2.0.0", + "semver": "^4.2.0" } }