-
Notifications
You must be signed in to change notification settings - Fork 1
/
update-readme.js
48 lines (36 loc) · 1.02 KB
/
update-readme.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
const { relative, join } = require('path');
const { default: findWorkspacePackages } = require('@pnpm/find-workspace-packages');
// eslint-disable-next-line import/no-unresolved
const TemplateFile = require('../packages/update-section');
function overview(pkg) {
if (!pkg.overview) return '';
const updated = pkg.overview.replace('(./', `(./${pkg.dir}/`);
return `
${updated}
`;
}
async function run() {
const cwd = process.cwd();
const packages = [];
for (const { dir, manifest } of await findWorkspacePackages(cwd)) {
if (dir !== cwd) {
packages.push({
...manifest,
dir: relative(cwd, dir),
overview: await TemplateFile.getSection(join(dir, 'README.md'), 'overview'),
});
}
}
const packageToc = `## Packages
${packages
.map(
(p) => `### [${p.name}](${p.dir})
> ${p.description}${overview(p)}`
)
.join('\n')}`;
await TemplateFile.updateSection('README.md', 'packages', packageToc);
}
run().catch((error) => {
console.error(error);
process.exitCode = 1;
});