Skip to content

Commit bd09d71

Browse files
committed
Automate selection of latest Processing releases
Added logic to fetchReleases.js to automatically select the latest stable release for each major Processing version and update selected.json accordingly. Also updated processing-1310-4.4.10.json to mark the release as stable and adjusted selected.json to reflect the new selection logic.
1 parent 733d88a commit bd09d71

File tree

3 files changed

+55
-7
lines changed

3 files changed

+55
-7
lines changed

content/download/releases/processing-1310-4.4.10.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "Processing 4.4.10",
33
"tagName": "processing-1310-4.4.10",
4-
"isPrerelease": true,
4+
"isPrerelease": false,
55
"publishedAt": "2025-10-14T14:41:33Z",
66
"releaseAssets": {
77
"edges": [

content/download/selected.json

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
11
{
22
"selectedReleases": [
3-
"processing-1310-4.4.10",
3+
"processing-1.5.1",
4+
"processing-0225-2.1.2",
45
"processing-0270-3.5.4",
5-
"processing-0227-2.2.1"
6+
"processing-1310-4.4.10"
67
],
7-
"selectedPreReleases": [
8-
""
9-
]
10-
}
8+
"selectedPreReleases": []
9+
}

scripts/fetchReleases.js

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,55 @@ const fetchReleases = async (githubToken) => {
7777
JSON.stringify(release.node, null, 2)
7878
);
7979
});
80+
81+
// sort releases by major version eg : {"1": [], "2": [], "3": [], "4": []}
82+
const sortedReleases = releases.reduce((acc, release) => {
83+
const majorVersion = release.node.tagName.replace(/processing(-\d+)?-/, '').split('.')[0];
84+
if (!acc[majorVersion]) {
85+
acc[majorVersion] = [];
86+
}
87+
acc[majorVersion].push(release.node);
88+
acc[majorVersion].sort((a, b) => new Date(b.publishedAt) - new Date(a.publishedAt));
89+
return acc;
90+
}, {});
91+
92+
// genereate the content/download/selected.json e.g.
93+
// {
94+
// "selectedReleases": [
95+
// "processing-1310-4.4.10",
96+
// "processing-0270-3.5.4",
97+
// "processing-0227-2.2.1"
98+
// ],
99+
// "selectedPreReleases": [
100+
// ""
101+
// ]
102+
// }
103+
// select the latest release for each major version
104+
const selectedReleases = Object.values(sortedReleases).map(
105+
(releases) => releases[0].tagName
106+
);
107+
const latestStableRelease = releases.toSorted((a, b) => new Date(b.node.publishedAt) - new Date(a.node.publishedAt))[0].node;
108+
109+
// select the latest pre-release from processing4 if it is newer than the latest stable release
110+
const preReleases = processing4.releases.edges.filter(
111+
(release) => release.node.isPrerelease && new Date(release.node.publishedAt) > new Date(latestStableRelease.publishedAt)
112+
);
113+
const selectedPreReleases = preReleases.length
114+
? [preReleases[0].node.tagName]
115+
: [];
116+
fs.writeFileSync(
117+
path.join(__dirname, '..', 'content', 'download', 'selected.json'),
118+
JSON.stringify(
119+
{
120+
selectedReleases,
121+
selectedPreReleases
122+
},
123+
null,
124+
2
125+
)
126+
);
127+
128+
80129
};
81130

82131
if (process.env.GITHUB_TOKEN) {

0 commit comments

Comments
 (0)