blob: 5d3ae825b70a6fa9bcdf367866e9deb8a096e850 [file] [log] [blame]
Leo Repp58b9f112021-11-22 11:57:47 +01001'use strict';
2const semver = require('semver');
3const binVersion = require('bin-version');
4const semverTruncate = require('semver-truncate');
5
6module.exports = (binary, semverRange, options) => {
7 if (typeof binary !== 'string' || typeof semverRange !== 'string') {
8 return Promise.reject(new Error('`binary` and `semverRange` arguments required'));
9 }
10
11 if (!semver.validRange(semverRange)) {
12 return Promise.reject(new Error('Invalid version range'));
13 }
14
15 return binVersion(binary, options).then(binaryVersion => {
16 if (!semver.satisfies(semverTruncate(binaryVersion, 'patch'), semverRange)) {
17 const error = new Error(`${binary} ${binaryVersion} doesn't satisfy the version requirement of ${semverRange}`);
18 error.name = 'InvalidBinaryVersion';
19 throw error;
20 }
21 });
22};