render-gfm
Version:
Render GitHub Flavoured Markdown, with CSS for each of GitHub's themes.
79 lines • 6.81 kB
JavaScript
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
import fs from 'fs';
import path from 'path';
import { Command } from 'commander';
import render, { generateCSS } from './index.js';
const cli = new Command();
cli
.name('render-gfm')
.description("Render GitHub Flavoured Markdown, with CSS for each of GitHub's themes")
.helpOption('-h, --help', 'Display help for the command')
.addHelpCommand(false);
cli.command('markdown')
.description("Render Markdown files only")
.argument('[files...]', 'The Markdown file(s) to render. Can be absolute or relative paths.')
.option("-o, --output-dir <string>", "The output directory. Defaults to 'dist' in the current working directory")
.option('-d, --debug', 'Show debug logs')
.action((files, options) => __awaiter(void 0, void 0, void 0, function* () {
if (files.length === 0)
return cli.outputHelp();
try {
yield markdown(files, options.outputDir || './dist');
}
catch (e) {
console.log('There was an error rendering the Markdown file(s).');
if (options.debug)
console.error(e);
return;
}
return console.log(`Successfully rendered Markdown file(s) to '${path.resolve(options.outputDir || './dist') || path.resolve('./dist')}'!`);
}));
cli.command('themes')
.description("Generate the CSS for each of GitHub's themes only")
.option("-o, --output-dir <string>", "The output directory. Defaults to 'dist' in the current working directory")
.option('-d, --debug', 'Show debug logs')
.action((options) => __awaiter(void 0, void 0, void 0, function* () {
try {
yield themes(options.outputDir || './dist/css');
}
catch (e) {
console.log('There was an error generating the CSS file(s).');
if (options.debug)
console.error(e);
return;
}
return console.log(`Successfully generated CSS file(s) to '${path.resolve(options.outputDir || './dist/css') || path.resolve('./dist')}'!`);
}));
cli.parse();
/**
* Render Markdown files (looks in the current working directory by default, if relative paths are specified) to the specified output directory.
* @param {string[]} files An array of the Markdown file paths to render. Can be absolute or relative paths.
* @param {string} outputDir The directory to write the rendered HTML to. If unspecified, the default is the folder "dist" in the current working directory.
*/
export function markdown(files, outputDir = './dist') {
return __awaiter(this, void 0, void 0, function* () {
for (const file of files) {
const markdown = fs.readFileSync(file, { encoding: 'utf8' });
yield render(markdown, path.join(outputDir, `${path.basename(file, '.md')}.html`));
}
});
}
/**
* Generate CSS files for each of GitHub's themes to the specified output directory.
* @param {string} outputDir The directory to write the CSS files to. If unspecified, the default is the folder "dist/css" in the current working directory.
*/
export function themes(outputDir = './dist/css') {
return __awaiter(this, void 0, void 0, function* () {
yield generateCSS(outputDir);
});
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic3JjL2NsaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBRUEsT0FBTyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ3BCLE9BQU8sSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUV4QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3BDLE9BQU8sTUFBTSxFQUFFLEVBQUUsV0FBVyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRWpELE1BQU0sR0FBRyxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7QUFFMUIsR0FBRztLQUNFLElBQUksQ0FBQyxZQUFZLENBQUM7S0FDbEIsV0FBVyxDQUFDLHdFQUF3RSxDQUFDO0tBQ3JGLFVBQVUsQ0FBQyxZQUFZLEVBQUUsOEJBQThCLENBQUM7S0FDeEQsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBRTNCLEdBQUcsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDO0tBQ2xCLFdBQVcsQ0FBQyw0QkFBNEIsQ0FBQztLQUN6QyxRQUFRLENBQUMsWUFBWSxFQUFFLG9FQUFvRSxDQUFDO0tBQzVGLE1BQU0sQ0FBQywyQkFBMkIsRUFBRSwyRUFBMkUsQ0FBQztLQUNoSCxNQUFNLENBQUMsYUFBYSxFQUFFLGlCQUFpQixDQUFDO0tBQ3hDLE1BQU0sQ0FBQyxDQUFPLEtBQWUsRUFBRSxPQUFPLEVBQUUsRUFBRTtJQUN2QyxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQztRQUFFLE9BQU8sR0FBRyxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBRWhELElBQUksQ0FBQztRQUNELE1BQU0sUUFBUSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsU0FBUyxJQUFJLFFBQVEsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQ1QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxvREFBb0QsQ0FBQyxDQUFDO1FBQ2xFLElBQUksT0FBTyxDQUFDLEtBQUs7WUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3BDLE9BQU87SUFDWCxDQUFDO0lBRUQsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLDhDQUE4QyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxTQUFTLElBQUksUUFBUSxDQUFDLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7QUFFaEosQ0FBQyxDQUFBLENBQUMsQ0FBQztBQUVQLEdBQUcsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDO0tBQ2hCLFdBQVcsQ0FBQyxtREFBbUQsQ0FBQztLQUNoRSxNQUFNLENBQUMsMkJBQTJCLEVBQUUsMkVBQTJFLENBQUM7S0FDaEgsTUFBTSxDQUFDLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQztLQUN4QyxNQUFNLENBQUMsQ0FBTyxPQUFPLEVBQUUsRUFBRTtJQUV0QixJQUFJLENBQUM7UUFDRCxNQUFNLE1BQU0sQ0FBQyxPQUFPLENBQUMsU0FBUyxJQUFJLFlBQVksQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQ1QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxnREFBZ0QsQ0FBQyxDQUFDO1FBQzlELElBQUksT0FBTyxDQUFDLEtBQUs7WUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3BDLE9BQU87SUFDWCxDQUFDO0lBRUQsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLDBDQUEwQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxTQUFTLElBQUksWUFBWSxDQUFDLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7QUFFaEosQ0FBQyxDQUFBLENBQUMsQ0FBQztBQUVQLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUVaOzs7O0dBSUc7QUFDSCxNQUFNLFVBQWdCLFFBQVEsQ0FBQyxLQUFlLEVBQUUsWUFBb0IsUUFBUTs7UUFDeEUsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUN2QixNQUFNLFFBQVEsR0FBRyxFQUFFLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO1lBQzdELE1BQU0sTUFBTSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQ3ZGLENBQUM7SUFDTCxDQUFDO0NBQUE7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLFVBQWdCLE1BQU0sQ0FBQyxZQUFvQixZQUFZOztRQUN6RCxNQUFNLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNqQyxDQUFDO0NBQUEifQ==