Revert "Switch cmd parser to latest minimist"
This reverts commit c2f1e62.
- Loading branch information
- +0 −6 bin/.eslintrc.js
- +108 −160 bin/handlebars
- +213 −24 package-lock.json
- +1 −2 package.json
- +2 −2 spec/expected/help.menu.txt
| @@ -1,176 +1,124 @@ | ||
| #!/usr/bin/env node | ||
|
|
||
| var argv = parseArgs({ | ||
| 'f': { | ||
| 'type': 'string', | ||
| 'description': 'Output File', | ||
| 'alias': 'output' | ||
| }, | ||
| 'map': { | ||
| 'type': 'string', | ||
| 'description': 'Source Map File' | ||
| }, | ||
| 'a': { | ||
| 'type': 'boolean', | ||
| 'description': 'Exports amd style (require.js)', | ||
| 'alias': 'amd' | ||
| }, | ||
| 'c': { | ||
| 'type': 'string', | ||
| 'description': 'Exports CommonJS style, path to Handlebars module', | ||
| 'alias': 'commonjs', | ||
| 'default': null | ||
| }, | ||
| 'h': { | ||
| 'type': 'string', | ||
| 'description': 'Path to handlebar.js (only valid for amd-style)', | ||
| 'alias': 'handlebarPath', | ||
| 'default': '' | ||
| }, | ||
| 'k': { | ||
| 'type': 'string', | ||
| 'description': 'Known helpers', | ||
| 'alias': 'known' | ||
| }, | ||
| 'o': { | ||
| 'type': 'boolean', | ||
| 'description': 'Known helpers only', | ||
| 'alias': 'knownOnly' | ||
| }, | ||
| 'm': { | ||
| 'type': 'boolean', | ||
| 'description': 'Minimize output', | ||
| 'alias': 'min' | ||
| }, | ||
| 'n': { | ||
| 'type': 'string', | ||
| 'description': 'Template namespace', | ||
| 'alias': 'namespace', | ||
| 'default': 'Handlebars.templates' | ||
| }, | ||
| 's': { | ||
| 'type': 'boolean', | ||
| 'description': 'Output template function only.', | ||
| 'alias': 'simple' | ||
| }, | ||
| 'N': { | ||
| 'type': 'string', | ||
| 'description': 'Name of passed string templates. Optional if running in a simple mode. Required when operating on multiple templates.', | ||
| 'alias': 'name' | ||
| }, | ||
| 'i': { | ||
| 'type': 'string', | ||
| 'description': 'Generates a template from the passed CLI argument.\n"-" is treated as a special value and causes stdin to be read for the template value.', | ||
| 'alias': 'string' | ||
| }, | ||
| 'r': { | ||
| 'type': 'string', | ||
| 'description': 'Template root. Base value that will be stripped from template names.', | ||
| 'alias': 'root' | ||
| }, | ||
| 'p': { | ||
| 'type': 'boolean', | ||
| 'description': 'Compiling a partial template', | ||
| 'alias': 'partial' | ||
| }, | ||
| 'd': { | ||
| 'type': 'boolean', | ||
| 'description': 'Include data when compiling', | ||
| 'alias': 'data' | ||
| }, | ||
| 'e': { | ||
| 'type': 'string', | ||
| 'description': 'Template extension.', | ||
| 'alias': 'extension', | ||
| 'default': 'handlebars' | ||
| }, | ||
| 'b': { | ||
| 'type': 'boolean', | ||
| 'description': 'Removes the BOM (Byte Order Mark) from the beginning of the templates.', | ||
| 'alias': 'bom' | ||
| }, | ||
| 'v': { | ||
| 'type': 'boolean', | ||
| 'description': 'Prints the current compiler version', | ||
| 'alias': 'version' | ||
| }, | ||
| 'help': { | ||
| 'type': 'boolean', | ||
| 'description': 'Outputs this message' | ||
| } | ||
| }); | ||
|
|
||
| const yargs = require('yargs') | ||
| .usage('Precompile handlebar templates.\nUsage: $0 [template|directory]...') | ||
| .option('f', { | ||
| type: 'string', | ||
| description: 'Output File', | ||
| alias: 'output' | ||
| }) | ||
| .option('map', { | ||
| type: 'string', | ||
| description: 'Source Map File' | ||
| }) | ||
| .option('a', { | ||
| type: 'boolean', | ||
| description: 'Exports amd style (require.js)', | ||
| alias: 'amd' | ||
| }) | ||
| .option('c', { | ||
| type: 'string', | ||
| description: 'Exports CommonJS style, path to Handlebars module', | ||
| alias: 'commonjs', | ||
| default: null | ||
| }) | ||
| .option('h', { | ||
| type: 'string', | ||
| description: 'Path to handlebar.js (only valid for amd-style)', | ||
| alias: 'handlebarPath', | ||
| default: '' | ||
| }) | ||
| .option('k', { | ||
| type: 'string', | ||
| description: 'Known helpers', | ||
| alias: 'known' | ||
| }) | ||
| .option('o', { | ||
| type: 'boolean', | ||
| description: 'Known helpers only', | ||
| alias: 'knownOnly' | ||
| }) | ||
| .option('m', { | ||
| type: 'boolean', | ||
| description: 'Minimize output', | ||
| alias: 'min' | ||
| }) | ||
| .option('n', { | ||
| type: 'string', | ||
| description: 'Template namespace', | ||
| alias: 'namespace', | ||
| default: 'Handlebars.templates' | ||
| }) | ||
| .option('s', { | ||
| type: 'boolean', | ||
| description: 'Output template function only.', | ||
| alias: 'simple' | ||
| }) | ||
| .option('N', { | ||
| type: 'string', | ||
| description: | ||
| 'Name of passed string templates. Optional if running in a simple mode. Required when operating on multiple templates.', | ||
| alias: 'name' | ||
| }) | ||
| .option('i', { | ||
| type: 'string', | ||
| description: | ||
| 'Generates a template from the passed CLI argument.\n"-" is treated as a special value and causes stdin to be read for the template value.', | ||
| alias: 'string' | ||
| }) | ||
| .option('r', { | ||
| type: 'string', | ||
| description: | ||
| 'Template root. Base value that will be stripped from template names.', | ||
| alias: 'root' | ||
| }) | ||
| .option('p', { | ||
| type: 'boolean', | ||
| description: 'Compiling a partial template', | ||
| alias: 'partial' | ||
| }) | ||
| .option('d', { | ||
| type: 'boolean', | ||
| description: 'Include data when compiling', | ||
| alias: 'data' | ||
| }) | ||
| .option('e', { | ||
| type: 'string', | ||
| description: 'Template extension.', | ||
| alias: 'extension', | ||
| default: 'handlebars' | ||
| }) | ||
| .option('b', { | ||
| type: 'boolean', | ||
| description: | ||
| 'Removes the BOM (Byte Order Mark) from the beginning of the templates.', | ||
| alias: 'bom' | ||
| }) | ||
| .option('v', { | ||
| type: 'boolean', | ||
| description: 'Prints the current compiler version', | ||
| alias: 'version' | ||
| }) | ||
| .option('help', { | ||
| type: 'boolean', | ||
| description: 'Outputs this message' | ||
| }) | ||
| .wrap(120); | ||
|
|
||
| const argv = yargs.argv; | ||
| argv.files = argv._; | ||
| delete argv._; | ||
|
|
||
| var Precompiler = require('../dist/cjs/precompiler'); | ||
| const Precompiler = require('../dist/cjs/precompiler'); | ||
| Precompiler.loadTemplates(argv, function(err, opts) { | ||
|
|
||
| if (err) { | ||
| throw err; | ||
| } | ||
|
|
||
| if (opts.help || (!opts.templates.length && !opts.version)) { | ||
| printUsage(argv._spec, 120); | ||
| yargs.showHelp(); | ||
| } else { | ||
| Precompiler.cli(opts); | ||
| } | ||
| }); | ||
|
|
||
| function pad(n) { | ||
| var str = ''; | ||
| while (str.length < n) { | ||
| str += ' '; | ||
| } | ||
| return str; | ||
| } | ||
|
|
||
| function parseArgs(spec) { | ||
| var opts = { alias: {}, boolean: [], default: {}, string: [] }; | ||
|
|
||
| Object.keys(spec).forEach(function (arg) { | ||
| var opt = spec[arg]; | ||
| opts[opt.type].push(arg); | ||
| if ('alias' in opt) opts.alias[arg] = opt.alias; | ||
| if ('default' in opt) opts.default[arg] = opt.default; | ||
| }); | ||
|
|
||
| var argv = require('minimist')(process.argv.slice(2), opts); | ||
| argv._spec = spec; | ||
| return argv; | ||
| } | ||
|
|
||
| function printUsage(spec, wrap) { | ||
| var wordwrap = require('wordwrap'); | ||
|
|
||
| console.log('Precompile handlebar templates.'); | ||
| console.log('Usage: handlebars [template|directory]...'); | ||
|
|
||
| var opts = []; | ||
| var width = 0; | ||
| Object.keys(spec).forEach(function (arg) { | ||
| var opt = spec[arg]; | ||
|
|
||
| var name = (arg.length === 1 ? '-' : '--') + arg; | ||
| if ('alias' in opt) name += ', --' + opt.alias; | ||
|
|
||
| var meta = '[' + opt.type + ']'; | ||
| if ('default' in opt) meta += ' [default: ' + JSON.stringify(opt.default) + ']'; | ||
|
|
||
| opts.push({ name: name, desc: opt.description, meta: meta }); | ||
| if (name.length > width) width = name.length; | ||
| }); | ||
|
|
||
| console.log('Options:'); | ||
| opts.forEach(function (opt) { | ||
| var desc = wordwrap(width + 4, wrap + 1)(opt.desc); | ||
|
|
||
| console.log(' %s%s%s%s%s', | ||
| opt.name, | ||
| pad(width - opt.name.length + 2), | ||
| desc.slice(width + 4), | ||
| pad(wrap - opt.meta.length - desc.split(/\n/).pop().length), | ||
| opt.meta | ||
| ); | ||
| }); | ||
| } |