37 lines
979 B
JavaScript
37 lines
979 B
JavaScript
const fs = require('fs');
|
|
const path = require('path');
|
|
|
|
const releasesDir = path.resolve(__dirname, '..', 'docs', 'releases');
|
|
const manifestPath = path.join(releasesDir, 'releases-manifest.json');
|
|
|
|
function toTitle(fileName) {
|
|
return path.basename(fileName, path.extname(fileName));
|
|
}
|
|
|
|
function getReleaseEntries() {
|
|
if (!fs.existsSync(releasesDir)) {
|
|
return [];
|
|
}
|
|
|
|
return fs.readdirSync(releasesDir, { withFileTypes: true })
|
|
.filter((entry) => entry.isFile() && path.extname(entry.name).toLowerCase() === '.md')
|
|
.map((entry) => entry.name)
|
|
.sort((left, right) => right.localeCompare(left, undefined, { numeric: true, sensitivity: 'base' }))
|
|
.map((fileName) => ({
|
|
fileName,
|
|
title: toTitle(fileName)
|
|
}));
|
|
}
|
|
|
|
function main() {
|
|
fs.mkdirSync(releasesDir, { recursive: true });
|
|
|
|
const manifest = {
|
|
revisions: getReleaseEntries()
|
|
};
|
|
|
|
fs.writeFileSync(manifestPath, JSON.stringify(manifest, null, 2) + '\n', 'utf8');
|
|
}
|
|
|
|
main();
|