pidgin/nest

Move most of custom header to meta partial

19 months ago, Elliott Sales de Andrade
bb1e9645cf74
Move most of custom header to meta partial

This puts the version comment stuff earlier in the file, so it's more
noticeable, and keeps the OpenGraph/Twitter card info near the other `meta`
tags.

Unfortunately, this does mean we need to copy in the original `meta` partial,
but it's only two lines.

Testing Done:
Checked rendered results and the meta tags were still there.

Reviewed at https://reviews.imfreedom.org/r/1929/
/**
* Runs after Hugo has built the site
* * Cleans, Minifies and Optimises hugo output
*
* USAGE: node tools/pre-prod [path to hugo output]
*/
/*****************************************************************************
* Imports
*****************************************************************************/
const fs = require('fs')
const path = require('path')
const { html: beautify_html } = require('js-beautify')
/*****************************************************************************
* Set Up
*****************************************************************************/
const target =
// looks for a path in first arg or default to `./public/`
path.join(__dirname, `..`, process.argv[2] || 'public') + path.sep
const xmlRegex = /\.(html|xml)$/
const jsonRegex = /\.json$/
const svgRegex = /\.svg$/
const htmlBeautifyOptions = { max_preserve_newlines: 0 }
/*****************************************************************************
* Execution
*****************************************************************************/
getFilePaths(target).forEach(path => {
if (path.match(xmlRegex)) {
tidyXML(path)
} else if (path.match(jsonRegex)) {
minifyJSON(path)
}
})
/*****************************************************************************
* File Handlers
*****************************************************************************/
/**
* Format XML and HTML, removing hugo template artifacts,
* like whitespace chasms
* @param {string} path
*/
function tidyXML(path) {
const data = fs.readFileSync(path, 'utf8')
const formatted = beautify_html(data, htmlBeautifyOptions)
fs.writeFile(path, formatted, err => {
if (err) {
console.log(`Error Tidying ${path}`, err)
}
console.log(`Tidied path: ${path.replace(target, '')}`)
})
}
/**
* Minify JSON
* @param {string} path
*/
function minifyJSON(path) {
const data = fs.readFileSync(path, 'utf8')
const formatted = JSON.stringify(JSON.parse(data))
fs.writeFile(path, formatted, err => {
if (err) {
console.log(`Error minifying ${path}`, err)
}
console.log(`Minified path: ${path.replace(target, '')}`)
})
}
/*****************************************************************************
* Helpers
*****************************************************************************/
function getFilePaths(input) {
const items = readDir(input)
const ret = []
while (items.length) {
const item = items.pop()
const stat = fs.statSync(item)
if (stat.isDirectory()) {
items.push(...readDir(item))
} else if (stat.isFile()) {
ret.push(item)
}
}
return ret
}
function readDir(item) {
return fs.readdirSync(item).map(i => path.join(item, i))
}