UNPKG

render-gfm

Version:

Render GitHub Flavoured Markdown, with CSS for each of GitHub's themes.

79 lines 6.81 kB
#!/usr/bin/env node 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==