agmission/client/scripts/generate-release-manifest.js

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();