29 lines
759 B
JavaScript
29 lines
759 B
JavaScript
|
'use strict';
|
||
|
var semver = require('semver');
|
||
|
var binVersion = require('bin-version');
|
||
|
var semverTruncate = require('semver-truncate');
|
||
|
|
||
|
module.exports = function (bin, versionRange, cb) {
|
||
|
if (typeof bin !== 'string' || typeof versionRange !== 'string') {
|
||
|
throw new Error('`binary` and `versionRange` required');
|
||
|
}
|
||
|
|
||
|
if (!semver.validRange(versionRange)) {
|
||
|
return cb(new Error('Invalid version range'));
|
||
|
}
|
||
|
|
||
|
binVersion(bin, function (err, binVersion) {
|
||
|
if (err) {
|
||
|
return cb(err);
|
||
|
}
|
||
|
|
||
|
if (!semver.satisfies(semverTruncate(binVersion, 'patch'), versionRange)) {
|
||
|
err = new Error(bin + ' ' + binVersion + ' does not satisfy the version requirement of ' + versionRange);
|
||
|
err.name = 'InvalidBinVersion';
|
||
|
return cb(err);
|
||
|
}
|
||
|
|
||
|
cb();
|
||
|
});
|
||
|
};
|