#!/usr/bin/env node var Mdx = require('../index') var Extractor = Mdx.Extractor if (!process.parent) run() /** * Runs. */ function run () { var read = require('read-input') var cli = getcli() var ex = new Extractor({ excludeTags: cli.flags.excludeTag }) read(cli.input).then(function (res) { // non-fatal errors if (res.error) console.warn(res.error.message) res.files.forEach(function (f) { ex.push(f.name, f.data) }) var output = ex.toJson() if (cli.flags.format === 'json') { console.log(JSON.stringify(output, null, 2)) } else if (cli.flags.format === 'markdown') { output = Mdx.renderTemplate(output) process.stdout.write(output) } else { console.error('unknown format: ' + cli.flags.format) } }).catch(function (err) { console.error(err.stack) process.exit(1) }) } function getcli () { var cli = require('meow')(` Usage: mdx [options] [files...] Options: -f, --format FMT set output format {json, markdown} -m, --markdown short for --format=markdown --json short for --format=json -x, --exclude-tag TAG excludes certain tag (can be repeated) Other options: -h, --help show usage information -v, --version print version info and exit Examples: mdx lib/*.js cat lib/*.js | mdx -x internal -f markdown `, { alias: { h: 'help', v: 'version', f: 'format', x: 'exclude-tag', m: 'markdown' }, boolean: ['markdown', 'json'], string: ['exclude-tag', 'format'], default: { format: 'json' }, '--': true }) if (cli.flags.markdown) cli.flags.format = 'markdown' if (cli.flags.json) cli.flags.format = 'json' if (!cli.flags.excludeTag) { cli.flags.excludeTag = [] } else if (!Array.isArray(cli.flags.excludeTag)) { cli.flags.excludeTag = [cli.flags.excludeTag] } return cli }