| #!/usr/bin/env node |
| |
| var optimist = require('optimist') |
| .usage('Precompile handlebar templates.\nUsage: $0 [template|directory]...', { |
| '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' |
| } |
| }) |
| |
| .wrap(120) |
| .check(function(argv) { |
| if (argv.version) { |
| return; |
| } |
| }); |
| |
| |
| var argv = optimist.argv; |
| argv.files = argv._; |
| delete argv._; |
| |
| var Precompiler = require('../dist/cjs/precompiler'); |
| Precompiler.loadTemplates(argv, function(err, opts) { |
| if (err) { |
| throw err; |
| } |
| |
| if (opts.help || (!opts.templates.length && !opts.version)) { |
| optimist.showHelp(); |
| } else { |
| Precompiler.cli(opts); |
| } |
| }); |