libs/@guardian/browserslist-config/scripts/update-readme.mjs (35 lines of code) (raw):
/**
* Updates placeholders in the readme:
*
* <!-- MY_KEY --><!-- /MY_KEY --> becomes <!-- MY_KEY -->my-value<!-- /MY_KEY -->
*
* Note that anything between the comments is replaced each time.
*/
import { readFile, writeFile } from 'node:fs/promises';
import path from 'node:path';
import { fileURLToPath } from 'node:url';
import { format } from 'prettier';
import { includedTable } from './included-table.mjs';
import { usageTable } from './usage-table.mjs';
const __dirname = path.dirname(fileURLToPath(import.meta.url));
const pathToReadme = path.join(__dirname, '..', '/README.md');
let readme = await readFile(pathToReadme, 'utf8');
// the keys and values to be replaced
const replacements = [
{
key: 'INCLUDED',
value: includedTable,
},
{
key: 'USAGE',
value: usageTable,
},
];
for (const { key, value } of replacements) {
const regex = new RegExp(`<!-- ${key} -->(.|\n)*?<!-- /${key} -->`, 'gm');
readme = readme.replace(regex, `<!-- ${key} -->\n${value}\n<!-- /${key} -->`);
}
readme = await format(readme, {
parser: 'markdown',
});
await writeFile(pathToReadme, readme);