Files
template/bin/render
T
2017-09-01 16:11:27 -07:00

32 lines
1.0 KiB
JavaScript
Executable File

#!/usr/bin/env node
const path = require('path');
const program = require('commander');
const jsdom = require('jsdom');
const { JSDOM } = jsdom;
const transforms = require('../dist/transforms.v2.js');
program
.version('0.0.1')
.option('-i, --input <path>', 'path to input file.')
.parse(process.argv);
const virtualConsole = new jsdom.VirtualConsole();
// omitJSDOMErrors as JSDOM routinely can't parse modern CSS
virtualConsole.sendTo(console, { omitJSDOMErrors: true });
const options = { runScripts: 'outside-only', QuerySelector: true, virtualConsole: virtualConsole };
JSDOM.fromFile(program.input, options).then(dom => {
const window = dom.window;
const document = window.document;
const data = new transforms.FrontMatter;
data.inputHTMLPath = program.input; // may be needed to resolve relative links!
data.inputDirectory = path.dirname(program.input);
transforms.render(document, data);
transforms.distillify(document, data);
const transformedHtml = dom.serialize();
process.stdout.write(transformedHtml);
}).catch(console.error);