Skip to content

Commit bd6ff64

Browse files
author
crossplatform-bot
committed
build: update WV2 data automatically
1 parent fee7d0d commit bd6ff64

File tree

6 files changed

+95
-178
lines changed

6 files changed

+95
-178
lines changed

.github/workflows/update-data.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
name: 'Update data'
22

33
on:
4+
workflow_dispatch:
5+
46
schedule:
57
- cron: "0 19 * * *"
68

data/electron-releases.json

Lines changed: 0 additions & 170 deletions
This file was deleted.

scripts/data-updaters/electron-data.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ const update = async () => {
8080
electronData.releases = releases;
8181

8282
await fs.writeFile(
83-
electronDataPath,
83+
ELECTRON_DATA_PATH,
8484
JSON.stringify(electronData, null, 2),
8585
'utf-8'
8686
);
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
//@ts-check
2+
3+
const path = require('path');
4+
const fs = require('fs').promises;
5+
6+
const got = require('got').default;
7+
const releasesUrl =
8+
'https://api.nuget.org/v3/registration5-semver1/microsoft.web.webview2/index.json';
9+
10+
const latestVersion = require('latest-version').default;
11+
12+
const WV2_DATA_PATH = path.join(
13+
__dirname,
14+
'..',
15+
'..',
16+
'data',
17+
'technologies',
18+
'webview2.json'
19+
);
20+
21+
const compareReleases = (releaseA, releaseB) => {
22+
const dateA = new Date(releaseA.commitTimeStamp).getTime();
23+
const dateB = new Date(releaseB.commitTimeStamp).getTime();
24+
25+
if(dateA === dateB) return 0;
26+
27+
if(dateA > dateB) {
28+
return -1;
29+
}else {
30+
return 1;
31+
}
32+
};
33+
34+
const isNotPrerelease = (release) => {
35+
return !release.catalogEntry.version.endsWith('-prerelease');
36+
};
37+
38+
const toVersionAndDate = (release) => {
39+
return {
40+
version: release.catalogEntry.version,
41+
date: release.commitTimeStamp,
42+
};
43+
};
44+
45+
const getReleases = async () => {
46+
const { items } = await got(releasesUrl).json();
47+
48+
// There should only be one item in `items`
49+
const releases = items[0].items
50+
.sort(compareReleases)
51+
.filter(isNotPrerelease)
52+
.map(toVersionAndDate);
53+
54+
return releases;
55+
};
56+
57+
/**
58+
* Updates all the information related to WebView2:
59+
* - Releases
60+
*/
61+
const update = async () => {
62+
const wv2Data = JSON.parse(await fs.readFile(WV2_DATA_PATH, 'utf-8'));
63+
64+
const releases = await getReleases();
65+
66+
wv2Data.releases = releases;
67+
68+
await fs.writeFile(WV2_DATA_PATH, JSON.stringify(wv2Data, null, 2), 'utf-8');
69+
};
70+
71+
// When a file is run directly from Node.js, `require.main` is set to its module.
72+
// That means that it is possible to determine whether a file has been run directly
73+
// by testing `require.main === module`.
74+
// https://nodejs.org/docs/latest/api/modules.html#modules_accessing_the_main_module
75+
if (require.main === module) {
76+
update();
77+
}
78+
79+
module.exports = {
80+
update,
81+
};

scripts/update-data.js

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,11 @@
55
* if there are any;
66
*/
77

8-
const updateElectron = require('./data-updaters/electron-data').update;
8+
const updaters = new Map([
9+
['Electron', require('./data-updaters/electron-data').update],
10+
['WebView2', require('./data-updaters/webview2-data').update],
11+
]);
12+
913
const { getChanges, pushChanges } = require('./utils/git-commands');
1014

1115
const BRANCH = 'main';
@@ -14,12 +18,15 @@ const EMAIL = '[email protected]';
1418
const NAME = 'crossplatform-bot';
1519

1620
const start = async () => {
17-
console.log(`Updating Electron data`);
18-
await updateElectron();
21+
22+
for(const [technology, updater] of updaters){
23+
console.log(`Updating ${technology} data`);
24+
await updater();
25+
}
1926

2027
const changes = await getChanges();
2128

22-
if(!changes){
29+
if (!changes) {
2330
console.log(`No changes detected, done!`);
2431
return;
2532
}

scripts/utils/git-commands.js

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,7 @@
66
*
77
* https://github.com/electron/electronjs.org-new/blob/51e5f584353a8e2f653b0d06ca02a08154a48f13/scripts/utils/git-commands.js
88
*/
9-
10-
const github = require('@actions/github');
119
const { execute } = require('./execute');
12-
const GITHUB_TOKEN = process.env.GITHUB_TOKEN;
1310

1411
/**
1512
* Creates a new commit with the current changes.

0 commit comments

Comments
 (0)