Skip to content

Commit 1f123dc

Browse files
committed
feat: resolve node versions
1 parent 51c2244 commit 1f123dc

File tree

5 files changed

+645
-52
lines changed

5 files changed

+645
-52
lines changed

lib/travis.js

Lines changed: 23 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
'use strict';
22

3+
const Nv = require('@pkgjs/nv');
34
const Yaml = require('js-yaml');
45

56

@@ -16,12 +17,12 @@ internals.toArray = (v) => {
1617
};
1718

1819

19-
internals.scan = (travisYaml) => {
20+
internals.scan = async (travisYaml) => {
2021

21-
const raw = new Set();
22+
const rawSet = new Set();
2223

2324
for (const v of internals.toArray(travisYaml.node_js)) {
24-
raw.add(v);
25+
rawSet.add(v);
2526
}
2627

2728
if (travisYaml.env) {
@@ -31,7 +32,7 @@ internals.scan = (travisYaml) => {
3132
const matches = env.match(/(?:NODEJS_VER|TRAVIS_NODE_VERSION|NODE_VER)="?(node\/)?(?<version>[\w./*]+)"?/); /* hack syntax highlighter 🤦‍♂️ */
3233

3334
if (matches) {
34-
raw.add(matches.groups.version);
35+
rawSet.add(matches.groups.version);
3536
}
3637
}
3738
}
@@ -41,16 +42,29 @@ internals.scan = (travisYaml) => {
4142
for (const include of internals.toArray(travisYaml.matrix.include)) {
4243

4344
if (include.node_js) {
44-
raw.add(include.node_js);
45+
rawSet.add(include.node_js);
4546
}
4647
}
4748
}
4849

49-
if (travisYaml.language === 'node_js' && !raw.size) {
50-
raw.add('latest');
50+
if (travisYaml.language === 'node_js' && !rawSet.size) {
51+
rawSet.add('latest');
5152
}
5253

53-
return { raw: [...raw] };
54+
const raw = [...rawSet];
55+
const resolved = [];
56+
57+
for (const version of raw) {
58+
const nv = await Nv(version);
59+
60+
if (!nv.length) {
61+
continue;
62+
}
63+
64+
resolved.push(nv[nv.length - 1].version);
65+
}
66+
67+
return { raw, resolved };
5468
};
5569

5670

@@ -65,6 +79,6 @@ exports.detect = async ({ loadFile }) => {
6579
const travisYaml = Yaml.safeLoad(buffer, { schema: Yaml.FAILSAFE_SCHEMA });
6680

6781
return {
68-
travis: internals.scan(travisYaml)
82+
travis: await internals.scan(travisYaml)
6983
};
7084
};

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
},
3232
"dependencies": {
3333
"@hapi/wreck": "^16.0.1",
34+
"@pkgjs/nv": "0.0.3",
3435
"git-url-parse": "^11.1.2",
3536
"js-yaml": "^3.13.1",
3637
"pacote": "^10.3.1",

0 commit comments

Comments
 (0)