index.js 759 B

1234567891011121314151617181920212223242526272829
  1. 'use strict';
  2. var semver = require('semver');
  3. var binVersion = require('bin-version');
  4. var semverTruncate = require('semver-truncate');
  5. module.exports = function (bin, versionRange, cb) {
  6. if (typeof bin !== 'string' || typeof versionRange !== 'string') {
  7. throw new Error('`binary` and `versionRange` required');
  8. }
  9. if (!semver.validRange(versionRange)) {
  10. return cb(new Error('Invalid version range'));
  11. }
  12. binVersion(bin, function (err, binVersion) {
  13. if (err) {
  14. return cb(err);
  15. }
  16. if (!semver.satisfies(semverTruncate(binVersion, 'patch'), versionRange)) {
  17. err = new Error(bin + ' ' + binVersion + ' does not satisfy the version requirement of ' + versionRange);
  18. err.name = 'InvalidBinVersion';
  19. return cb(err);
  20. }
  21. cb();
  22. });
  23. };