vike
Version:
The Framework *You* Control - Next.js & Nuxt alternative for unprecedented flexibility and dependability.
38 lines (37 loc) • 1.46 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.assertVersion = assertVersion;
exports.isVersionOrAbove = isVersionOrAbove;
const assert_js_1 = require("./assert.js");
function assertVersion(dependencyName, versionActual, versionExpected) {
(0, assert_js_1.assert)(versionActual);
(0, assert_js_1.assert)(versionExpected);
(0, assert_js_1.assertUsage)(isVersionOrAbove(versionActual, versionExpected), `${dependencyName} ${versionActual} isn't supported, use ${dependencyName} >= ${versionExpected} instead.`);
}
function isVersionOrAbove(versionActual, versionExpected) {
const p1 = parseVersion(versionActual);
const p2 = parseVersion(versionExpected);
// major
if (p1[0] !== p2[0])
return p1[0] > p2[0];
// minor
if (p1[1] !== p2[1])
return p1[1] > p2[1];
// patch
if (p1[2] !== p2[2])
return p1[2] > p2[2];
// Same version
return true;
}
function parseVersion(version) {
// Remove pre-release tag
version = version.split('-')[0];
let partsStr = version.split('.');
// Git seems to be using a fourth number: https://github.com/git/git/tree/master/Documentation/RelNotes
partsStr = partsStr.slice(0, 3);
// major.minor.patch
(0, assert_js_1.assert)(partsStr.length === 3);
(0, assert_js_1.assert)(partsStr.every((s) => s.length > 0));
const parts = partsStr.map((s) => parseInt(s, 10));
return parts;
}