1 | #!/usr/bin/env node
|
2 |
|
3 | /**
|
4 | * POC doc generation script.
|
5 | */
|
6 |
|
7 | /* eslint-disable import/no-extraneous-dependencies, no-console */
|
8 |
|
9 | const fs = require('fs');
|
10 | const jsdoc2md = require('jsdoc-to-markdown');
|
11 | const mkpath = require('mkpath');
|
12 | const path = require('path');
|
13 | const rimraf = require('rimraf');
|
14 |
|
15 | const OUTDIR = '../docs/auto';
|
16 |
|
17 | rimraf.sync(path.resolve(__dirname, OUTDIR));
|
18 |
|
19 | const outputDir = path.resolve(__dirname, OUTDIR);
|
20 |
|
21 | const data = jsdoc2md.getTemplateDataSync({ files: 'src/**/*.js' });
|
22 |
|
23 | const moduleNames = data.reduce((res, obj) => {
|
24 | if (obj.kind === 'module') res.push(obj.name);
|
25 | return res;
|
26 | }, []);
|
27 |
|
28 | moduleNames.forEach((name) => {
|
29 | const template = `{{#module name="${name}"}}{{>docs}}{{/module}}`;
|
30 | console.log(`rendering ${name}`);
|
31 | const output = jsdoc2md.renderSync({ data, template });
|
32 | const destFile = `${outputDir}/${name}.md`;
|
33 | mkpath.sync(path.dirname(destFile));
|
34 | fs.writeFileSync(destFile, output);
|
35 | });
|
36 |
|
37 | const template = '{{>module-index}}';
|
38 | const output = jsdoc2md.renderSync({
|
39 | data,
|
40 | partial: [
|
41 | path.resolve(__dirname, '../config/docgen/module-index-dl.hbs'),
|
42 | path.resolve(__dirname, '../config/docgen/doc-link-html.hbs'),
|
43 | ],
|
44 | template,
|
45 | });
|
46 | const dest = `${outputDir}/index.md`;
|
47 | mkpath.sync(path.dirname(dest));
|
48 | fs.writeFileSync(dest, output);
|