Skip to content

Commit 362c3ed

Browse files
authored
Merge pull request #375 from ganeshrvel/release/3.2.23
codemagic ci to install semver fix
2 parents edde3cb + f831010 commit 362c3ed

File tree

3 files changed

+39
-4
lines changed

3 files changed

+39
-4
lines changed

codemagic.yaml

+1-2
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,7 @@ definitions:
4545
- &install_global_packages
4646
name: Installing global packages
4747
script: |
48-
npm install -g semver@7.6.0 yarn @sentry/cli node-gyp zx yarn --force
49-
yarn global add semver@7.6.0
48+
npm install -g yarn @sentry/cli node-gyp zx yarn --force
5049
5150
- &install_app_packages
5251
name: Installing app packages

internals/scripts/CheckYarn.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
const { execSync } = require('child_process');
2-
const semver = require('semver');
2+
const { semverSatisfies } = require('./semver');
33

44
const requiredVersionRange = '>=6.x <=8.16.0';
55

66
try {
77
const npmVersion = execSync('npm -v').toString().trim();
88

9-
if (!semver.satisfies(npmVersion, requiredVersionRange)) {
9+
if (!semverSatisfies(npmVersion, requiredVersionRange)) {
1010
console.error(
1111
`Error: This project requires npm version ${requiredVersionRange}. You have version ${npmVersion}.\nPlease downgrade your npm, this is due to a bug in node-gyp. Github issue: https://github.com/ganeshrvel/openmtp/issues/367.\ncommand: npm install -g npm@8.16.0`
1212
);

internals/scripts/semver.js

+36
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
exports.semverSatisfies = (version, range) => {
2+
const [gtOp, gtVersion] = gtSemver(range);
3+
const [ltOp, ltVersion] = ltSemver(range);
4+
const versionParts = version.split('.').map(Number);
5+
const gtVersionParts = gtVersion.split('.').map(Number);
6+
const ltVersionParts = ltVersion.split('.').map(Number);
7+
8+
// eslint-disable-next-line no-plusplus
9+
for (let i = 0; i < 3; i++) {
10+
const vp = versionParts[i] || 0;
11+
const gtvp = gtVersionParts[i] || 0;
12+
const ltvp = ltVersionParts[i] || 0;
13+
14+
if (vp > ltvp || (vp === ltvp && ltOp === '<')) {
15+
return false;
16+
}
17+
18+
if (vp < gtvp || (vp === gtvp && gtOp === '>')) {
19+
return false;
20+
}
21+
}
22+
23+
return true;
24+
};
25+
26+
const gtSemver = (range) => {
27+
const gtPattern = />=?\s*(\d+(?:\.\d+(?:\.\d+)?)?)/.exec(range);
28+
29+
return gtPattern ? ['>=', gtPattern[1]] : ['>=', '0.0.0'];
30+
};
31+
32+
const ltSemver = (range) => {
33+
const ltPattern = /<=?\s*(\d+(?:\.\d+(?:\.\d+)?)?)/.exec(range);
34+
35+
return ltPattern ? ['<=', ltPattern[1]] : ['<=', '9999.9999.9999'];
36+
};

0 commit comments

Comments
 (0)