32 lines
1 KiB
JavaScript
32 lines
1 KiB
JavaScript
const { join } = require('path');
|
|
const { outputFile } = require('fs-extra');
|
|
const marked = require('marked');
|
|
const getTemplate = require('./template');
|
|
const { getPinnedRepoJSONs, getStaticPageJSONs } = require('./discoverJSONData');
|
|
|
|
const distPath = './dist';
|
|
|
|
const generateStaticPages = async () => {
|
|
const interiorTemplate = await getTemplate('interior');
|
|
let repoJSONs = await getPinnedRepoJSONs();
|
|
let staticJSONs = await getStaticPageJSONs();
|
|
let combinedJSONs = repoJSONs.concat(staticJSONs);
|
|
const saveAsInteriorHTML = async json => {
|
|
let fileName = json.name.replace(/[^a-zA-Z\d:]/g, '').toLowerCase();
|
|
if (json.readme && json.readme.text) {
|
|
json.readme.html = marked(json.readme.text);
|
|
}
|
|
return outputFile(join(distPath, fileName) + '.html', interiorTemplate(json));
|
|
}
|
|
|
|
try {
|
|
return await Promise.all(combinedJSONs.map(saveAsInteriorHTML));
|
|
} catch (error) {
|
|
console.error('Error while writing html files', error);
|
|
return;
|
|
}
|
|
};
|
|
|
|
module.exports = {
|
|
generateStaticPages,
|
|
};
|