Skip to content

Commit 7fa3f7d

Browse files
committed
Support pre-release versions
1 parent 7f618d2 commit 7fa3f7d

File tree

1 file changed

+37
-9
lines changed

1 file changed

+37
-9
lines changed

prember-urls.js

Lines changed: 37 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -24,13 +24,21 @@ module.exports = function () {
2424

2525
const fullProjectVersions = readdirSync(
2626
`ember-api-docs-data/json-docs/${p}`
27-
).filter((v) => v.match(/\d+\.\d+\.\d+/));
27+
).filter((v) => !!semver.valid(v));
2828

2929
// add landing page for each of the projects versions
30-
const projectVersions = fullProjectVersions.map((v) => {
31-
let [, major, minor] = v.match(/(\d+)\.(\d+)\.\d+/);
32-
return `${major}.${minor}`;
33-
}); // uniq
30+
const projectVersions = fullProjectVersions
31+
.map((v) => {
32+
let parsed = semver.parse(v);
33+
if (!parsed) return null;
34+
if (parsed.prerelease && parsed.prerelease.length > 0) {
35+
return `${parsed.major}.${parsed.minor}.${
36+
parsed.patch
37+
}-${parsed.prerelease.join('.')}`;
38+
}
39+
return `${parsed.major}.${parsed.minor}`;
40+
})
41+
.filter(Boolean);
3442

3543
const uniqueProjectVersions = [...new Set(projectVersions)];
3644

@@ -55,9 +63,18 @@ module.exports = function () {
5563
];
5664

5765
uniqueProjectVersions.forEach((uniqVersion) => {
66+
let isPreRelease = uniqVersion.includes('-');
67+
let baseVersion = isPreRelease ? uniqVersion.split('-')[0] : uniqVersion;
68+
5869
if (
59-
!oldVersions.includes(uniqVersion) &&
60-
!semver.gte(`${uniqVersion}.0`, '6.0.0')
70+
!oldVersions.includes(baseVersion) &&
71+
!semver.valid(`${baseVersion}.0`)
72+
) {
73+
return;
74+
}
75+
if (
76+
!oldVersions.includes(baseVersion) &&
77+
!semver.gte(`${baseVersion}.0`, '6.0.0')
6178
) {
6279
return;
6380
}
@@ -66,14 +83,25 @@ module.exports = function () {
6683

6784
const sortedPatchVersions = fullProjectVersions
6885
.filter((projectVersion) => {
69-
// console.log("comparing", projectVersion, uniqVersion, semver.satisfies(projectVersion, uniqVersion))
70-
return semver.satisfies(projectVersion, uniqVersion);
86+
let parsed = semver.parse(projectVersion);
87+
if (!parsed) return false;
88+
if (isPreRelease) {
89+
return (
90+
`${parsed.major}.${parsed.minor}.${
91+
parsed.patch
92+
}-${parsed.prerelease.join('.')}` === uniqVersion
93+
);
94+
} else {
95+
return `${parsed.major}.${parsed.minor}` === uniqVersion;
96+
}
7197
})
7298
.sort(cmp);
7399

74100
const highestPatchVersion =
75101
sortedPatchVersions[sortedPatchVersions.length - 1];
76102

103+
if (!highestPatchVersion) return;
104+
77105
const revIndex = require(`${__dirname}/ember-api-docs-data/rev-index/${p}-${highestPatchVersion}.json`);
78106

79107
['classes', 'namespaces', 'modules'].forEach((entity) => {

0 commit comments

Comments
 (0)