UNPKG

mustache-cli

Version:
130 lines (106 loc) 5.59 kB
#!/usr/bin/env node 'use strict'; var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; var _path = require('path'); var _path2 = _interopRequireDefault(_path); var _fs = require('fs'); var _fs2 = _interopRequireDefault(_fs); var _commander = require('commander'); var _commander2 = _interopRequireDefault(_commander); var _stdin = require('stdin'); var _stdin2 = _interopRequireDefault(_stdin); var _mkdirp = require('mkdirp'); var _mkdirp2 = _interopRequireDefault(_mkdirp); var _cliColor = require('cli-color'); var _cliColor2 = _interopRequireDefault(_cliColor); var _package = require('../package.json'); var _package2 = _interopRequireDefault(_package); var _index = require('../lib/index'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var cwd = process.cwd(); _commander2.default.name(_package2.default.name); _commander2.default.version('\n mustache version: ' + require('mustache/package.json').version + '\n ' + _package2.default.name + ' version: ' + _package2.default.version + '\n'); _commander2.default.usage('[options] [dir]'); _commander2.default.option('-h, --help', 'output usage information'); _commander2.default.option('-m, --minify', 'compile minify HTML output'); _commander2.default.option('-p, --pretty', 'compile pretty HTML output'); _commander2.default.option('-s, --silent', 'do not output logs'); _commander2.default.option('-w, --watch', 'watch files'); _commander2.default.option('-c, --conf-dir <dir>', 'the config file directory (*.js or *.json, Default: ./conf)'); _commander2.default.option('-t, --tpl-dir <dir>', 'template file directory (Default: ./tpl)'); _commander2.default.option('-o, --out-dir <dir>', 'output the rendered HTML or compiled JavaScript to <dir> (Default: ./out)'); _commander2.default.option('-e, --extension <ext>', 'specify the output file extension (Default: html)'); _commander2.default.option('-C, --conf <path>', 'the config file (*.js or *.json)'); _commander2.default.option('-O, --out <path>', 'the rendered HTML file (*.html)'); _commander2.default.option('--pipe', 'enables pipeline mode'); _commander2.default.option('--color', 'enables colors on the console'); _commander2.default.option('--root-tpl <str>', 'as an entry to compile (Default: __root)'); _commander2.default.option('--tpl-prefix <str>', 'as a loading partial from a tpl file (Default: __)'); _commander2.default.option('--partial-prefix <str>', 'as a string partial (e.g. {{>partial}}, Default: _)'); _commander2.default.option('--global-data <path>', 'the file as global data to compile (*.js or *.json)'); _commander2.default.parse(process.argv); _commander2.default.on('--help', function () { console.log('\nExamples:\n\n\n # Default directory structure:\n src/\n \u251C\u2500\u2500 conf/*.js(on)\n \u251C\u2500\u2500 out/*.html\n \u2514\u2500\u2500 tpl/*.tpl\n\n # Render all files:\n $ ' + _package2.default.name + ' --color ./src\n\n # Render a single file:\n $ ' + _package2.default.name + ' -C data.json -O index.html ./src\n\n # Pipe mode:\n $ cat data.json | ' + _package2.default.name + ' --pipe ./src > index.html\n\n # Get more help:\n ' + _package2.default.homepage + '\n'); }); if (_commander2.default.help) { if (_commander2.default.globalData) { (0, _index.setGlobalData)(require(_path2.default.join(cwd, _commander2.default.globalData))); } var opts = { confDir: _commander2.default.confDir, tplDir: _commander2.default.tplDir, outDir: _commander2.default.outDir, rootTpl: _commander2.default.rootTpl, tplPrefix: _commander2.default.tplPrefix, partialPrefix: _commander2.default.partialPrefix, print: _commander2.default.silent ? function () {} : console.log, onError: _commander2.default.silent ? function () {} : console.error, minify: _commander2.default.minify, pretty: _commander2.default.pretty, watch: _commander2.default.watch, color: _commander2.default.color, ext: _commander2.default.extension }; if (_commander2.default.conf) { (function () { var config = require(_path2.default.resolve(_commander2.default.conf)); var text = (0, _index.output)(_extends({}, opts, { baseDir: _commander2.default.args[0], watch: false, color: false, config: config })); if (_commander2.default.out) { var outFile = _path2.default.resolve(_commander2.default.out); _mkdirp2.default.sync(_path2.default.dirname(outFile)); _fs2.default.writeFileSync(outFile, text); console.log(outFile); } else { process.stdout.write(text); } })(); } else if (_commander2.default.pipe) { (0, _stdin2.default)(function (json) { var config = JSON.parse(json.toString()); var text = (0, _index.output)(_extends({}, opts, { baseDir: _commander2.default.args[0], print: function print() {}, onError: function onError(e) { process.stderr.write(e.toString()); }, watch: false, color: false, config: config })); process.stdout.write(text); }); } else { for (var i = 0; i < _commander2.default.args.length; i++) { (0, _index.output)(_extends({}, opts, { baseDir: _commander2.default.args[i] })); } } } else { _commander2.default.outputHelp(); }