mirror of https://github.com/keeweb/keeweb.git
41 lines
1.4 KiB
JavaScript
41 lines
1.4 KiB
JavaScript
const fs = require('fs');
|
|
const path = require('path');
|
|
|
|
const version = process.argv
|
|
.filter((arg) => arg.startsWith('--version='))
|
|
.map((arg) => arg.replace('--version=', ''))[0];
|
|
if (!version) {
|
|
throw new Error('No version, launch with --version=1.2.3');
|
|
}
|
|
|
|
const output = process.argv
|
|
.filter((arg) => arg.startsWith('--output='))
|
|
.map((arg) => arg.replace('--output=', ''))[0];
|
|
if (!output) {
|
|
throw new Error('No output file, launch with --output=path/to/output-file.md');
|
|
}
|
|
|
|
// eslint-disable-next-line no-console
|
|
console.log(`Reading release notes for v${version}`);
|
|
|
|
const releaseNotesPath = path.join(__dirname, '../release-notes.md');
|
|
const releaseNotes = fs.readFileSync(releaseNotesPath, 'utf8');
|
|
const regex = new RegExp(`#####\\s+v${version.replace(/\./g, '\\.')}.*?\n([\\s\\S]*?)\n#####`);
|
|
|
|
const match = releaseNotes.match(regex);
|
|
if (!match) {
|
|
throw new Error(`Release notes for v${version} not found`);
|
|
}
|
|
|
|
const bodyReleaseNotes = match[1].trim().replace(/\s*\n/g, '\n');
|
|
|
|
const body = `${bodyReleaseNotes}
|
|
|
|
Want to keep releases happening? Donate to KeeWeb on [OpenCollective](https://opencollective.com/keeweb) or [GitHub](https://github.com/sponsors/keeweb). Thank you!`;
|
|
|
|
fs.mkdirSync(path.dirname(output), { recursive: true });
|
|
fs.writeFileSync(output, body);
|
|
|
|
// eslint-disable-next-line no-console
|
|
console.log(`Saved release notes for v${version} to ${output}`);
|