diff --git a/index.js b/index.js index f085835..987eef8 100644 --- a/index.js +++ b/index.js @@ -1,6 +1,6 @@ const chalk = require('chalk'); const { getPinnedRepoJSONs, getStaticPageJSONs } = require('./src/discoverJSONData'); -const { generateIndexPage, generateInteriorPages } = require('./src/generateHTMLPages'); +const { initialize: initializePages, generateIndexPage, generateInteriorPages } = require('./src/generateHTMLPages'); const copyStaticAssets = require('./src/copyStaticAssets'); const generateSpritesheet = require('./src/generateSpritesheet'); @@ -10,6 +10,10 @@ const generateSpritesheet = require('./src/generateSpritesheet'); console.log(chalk.blue('● Fetching Static Page Data...')); let staticJSONs = await getStaticPageJSONs(); + console.log(chalk.blue('● Initializing page generator...')); + await initializePages(); + console.log(chalk.green('✓ Initialized page partials')); + console.log(chalk.blue('● Generating index html page...')); await generateIndexPage(repoJSONs.concat(staticJSONs)); console.log(chalk.green('✓ Generated index html page')); diff --git a/src/generateHTMLPages.js b/src/generateHTMLPages.js index eb05cc7..c495d22 100644 --- a/src/generateHTMLPages.js +++ b/src/generateHTMLPages.js @@ -1,9 +1,13 @@ const { join } = require('path'); const { outputFile } = require('fs-extra'); -const getTemplate = require('./template'); +const { getTemplate, registerPartials } = require('./template'); const distPath = './dist'; +const initialize = async () => { + return registerPartials(); +} + const generateIndexPage = async jsonData => { const indexTemplate = await getTemplate('index'); @@ -30,6 +34,8 @@ const generateInteriorPages = async jsonData => { }; module.exports = { + initialize, generateInteriorPages, generateIndexPage, }; + diff --git a/src/template.js b/src/template.js index e4b1f26..64c5077 100644 --- a/src/template.js +++ b/src/template.js @@ -1,7 +1,24 @@ -const { compile } = require('handlebars'); -const { readFile } = require('fs-extra'); +const Handlebars = require('handlebars'); +const { readFile, readdir } = require('fs-extra'); +const { join, basename } = require('path'); -module.exports = async filename => { +const registerPartials = async () => { + try { + let results = await readdir('./src/templates/partials') + results.forEach(async filename => { + let filePath = join('./src/templates/partials', filename); + let partialName = basename(filename, '.hbs'); + let partialContents = await readFile(filePath); + partialContents = partialContents.toString(); + Handlebars.registerPartial(partialName, partialContents); + }); + } catch(error) { + console.error('Could not read partials in ./src/templates/partials/', error); + return; + } +} + +const getTemplate = async filename => { let template; try { template = await readFile(`./src/templates/${filename}.hbs`); @@ -10,6 +27,11 @@ module.exports = async filename => { console.error('Could not fetch template', filename, error); return; } - return compile(template); + return Handlebars.compile(template); +}; + +module.exports = { + registerPartials, + getTemplate, }; diff --git a/src/templates/partials/example.hbs b/src/templates/partials/example.hbs new file mode 100644 index 0000000..257cc56 --- /dev/null +++ b/src/templates/partials/example.hbs @@ -0,0 +1 @@ +foo