Skip to content

Commit 2d07d2b

Browse files
authored
Merge pull request #1984 from ember-learn/fix-version-links-processing
Fix version links processing
2 parents 97b0981 + d4cefa4 commit 2d07d2b

File tree

5 files changed

+224
-88
lines changed

5 files changed

+224
-88
lines changed

node-tests/replace-url-versions.js

Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
1+
const { expect } = require('chai');
2+
const replaceURLVersions = require('../scripts/helpers/replace-url-versions');
3+
4+
describe('replace url versions', function () {
5+
it('works', function () {
6+
expect(
7+
replaceURLVersions(
8+
'https://api.emberjs.com/ember/release/',
9+
'3.15',
10+
'3.15'
11+
)
12+
).to.equal('https://api.emberjs.com/ember/3.15/');
13+
expect(
14+
replaceURLVersions(
15+
'https://api.emberjs.com/ember/release',
16+
'3.15',
17+
'3.15'
18+
)
19+
).to.equal('https://api.emberjs.com/ember/3.15');
20+
expect(
21+
replaceURLVersions('https://api.emberjs.com/ember/3.20/', '3.15', '3.15')
22+
).to.equal('https://api.emberjs.com/ember/3.15/');
23+
expect(
24+
replaceURLVersions('https://api.emberjs.com/ember/3.20', '3.15', '3.15')
25+
).to.equal('https://api.emberjs.com/ember/3.15');
26+
expect(
27+
replaceURLVersions(
28+
'https://api.emberjs.com/ember/release/classes/Application',
29+
'3.15',
30+
'3.15'
31+
)
32+
).to.equal('https://api.emberjs.com/ember/3.15/classes/Application');
33+
expect(
34+
replaceURLVersions(
35+
'https://api.emberjs.com/ember-data/release/',
36+
'3.15',
37+
'3.15'
38+
)
39+
).to.equal('https://api.emberjs.com/ember-data/3.15/');
40+
expect(
41+
replaceURLVersions(
42+
'https://api.emberjs.com/ember-data/release',
43+
'3.15',
44+
'3.15'
45+
)
46+
).to.equal('https://api.emberjs.com/ember-data/3.15');
47+
expect(
48+
replaceURLVersions(
49+
'https://api.emberjs.com/ember-data/release',
50+
'3.15',
51+
'3.12'
52+
)
53+
).to.equal('https://api.emberjs.com/ember-data/3.12');
54+
expect(
55+
replaceURLVersions(
56+
'https://api.emberjs.com/ember/release',
57+
'3.15',
58+
'3.12'
59+
)
60+
).to.equal('https://api.emberjs.com/ember/3.15');
61+
expect(
62+
replaceURLVersions(
63+
'https://api.emberjs.com/ember-data/release/classes/Model/',
64+
'3.15',
65+
'3.15'
66+
)
67+
).to.equal('https://api.emberjs.com/ember-data/3.15/classes/Model/');
68+
expect(
69+
replaceURLVersions(
70+
'https://api.emberjs.com/ember-data/3.20/classes/Model/',
71+
'3.15',
72+
'3.15'
73+
)
74+
).to.equal('https://api.emberjs.com/ember-data/3.15/classes/Model/');
75+
expect(
76+
replaceURLVersions(
77+
'https://api.emberjs.com/ember-data/3.20/classes/Model/',
78+
'3.15',
79+
'3.12'
80+
)
81+
).to.equal('https://api.emberjs.com/ember-data/3.12/classes/Model/');
82+
expect(
83+
replaceURLVersions(
84+
'https://api.emberjs.com/ember/release/classes/@ember%2Fapplication/methods/getOwner',
85+
'3.15',
86+
'3.15'
87+
)
88+
).to.equal(
89+
'https://api.emberjs.com/ember/3.15/classes/@ember%2Fapplication/methods/getOwner'
90+
);
91+
expect(
92+
replaceURLVersions(
93+
'https://guides.emberjs.com/release/getting-started/',
94+
'3.15',
95+
'3.15'
96+
)
97+
).to.equal('https://guides.emberjs.com/v3.15.0/getting-started/');
98+
expect(
99+
replaceURLVersions(
100+
'https://guides.emberjs.com/release/getting-started/',
101+
'3.16.0',
102+
'3.16.0'
103+
)
104+
).to.equal('https://guides.emberjs.com/v3.16.0/getting-started/');
105+
});
106+
});

package-lock.json

Lines changed: 61 additions & 7 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@
5050
"babel-eslint": "^10.1.0",
5151
"broccoli-asset-rev": "^3.0.0",
5252
"chai": "^4.3.4",
53+
"commander": "^11.1.0",
5354
"compare-versions": "^6.0.0-rc.2",
5455
"ember-auto-import": "^2.6.1",
5556
"ember-cli": "~4.0.1",
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
module.exports = function replaceURLVersions(
2+
str,
3+
emberVersion,
4+
emberDataVersion
5+
) {
6+
let output;
7+
8+
// guides use `v3.20.0` version format
9+
const emberPatchVersion = /\d+\.\d+.\d+/.test(emberVersion)
10+
? emberVersion
11+
: emberVersion + '.0';
12+
output = str.replace(
13+
/https:\/\/guides.emberjs.com\/(release|v\d+\.\d+.\d+)(\/?)/g,
14+
`https://guides.emberjs.com/v${emberPatchVersion}$2`
15+
);
16+
17+
const emberDataPatchVersion = /\d+\.\d+.\d+/.test(emberDataVersion)
18+
? emberDataVersion
19+
: emberDataVersion + '.0';
20+
output = str.replace(
21+
/https:\/\/guides.emberjs.com\/(release|v\d+\.\d+.\d+)(\/?)/g,
22+
`https://guides.emberjs.com/v${emberDataPatchVersion}$2`
23+
);
24+
25+
// apis use `3.20` version format
26+
output = output.replace(
27+
/https:\/\/api.emberjs.com\/(ember)\/(release|\d+\.\d+)(\/?)/g,
28+
`https://api.emberjs.com/$1/${emberVersion}$3`
29+
);
30+
31+
output = output.replace(
32+
/https:\/\/api.emberjs.com\/(ember-data)\/(release|\d+\.\d+)(\/?)/g,
33+
`https://api.emberjs.com/$1/${emberDataVersion}$3`
34+
);
35+
36+
return output;
37+
};

0 commit comments

Comments
 (0)