kutt/docs/api/generate.ts
Pouria Ezzati 2c261ad4af
API doc generation! (#280)
Co-authored-by: trgwii <trgwii@hotmail.com>
2020-02-15 21:32:10 +03:30

49 lines
1.0 KiB
TypeScript

import { join, dirname } from 'path';
import { promises as fs } from 'fs';
import api from './api';
const Template = (output, { api, title, redoc }) =>
fs.writeFile(output,
`<DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
<title>${title}</title>
</head>
<body>
<redoc spec-url="${api}" />
<script src="${redoc}"></script>
</body>
</html>
`);
const Api = output =>
fs.writeFile(output, JSON.stringify(api));
const Redoc = output =>
fs.copyFile(join(
dirname(require.resolve('redoc')),
'redoc.standalone.js'),
output);
export default (async () => {
const out = join(__dirname, 'static');
const apiFile = 'api.json';
const redocFile = 'redoc.js';
await fs.mkdir(out, { recursive: true });
return Promise.all([
Api(join(out, apiFile)),
Redoc(join(out, redocFile)),
Template(join(out, 'index.html'), {
api: apiFile,
title: api.info.title,
redoc: redocFile
}),
]);
})();