Skip to content

Commit

Permalink
chore: add unit tests for cli options.
Browse files Browse the repository at this point in the history
  • Loading branch information
aorinevo committed Mar 29, 2020
1 parent 2dba7ee commit 1e1831f
Show file tree
Hide file tree
Showing 14 changed files with 2,615 additions and 2,237 deletions.
219 changes: 107 additions & 112 deletions bin/handlebars
@@ -1,127 +1,122 @@
#!/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'
},
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);

'help': {
'type': 'boolean',
'description': 'Outputs this message'
}
})

.wrap(120)
.check(function(argv) {
if (argv.version) {
return;
}
});


var argv = optimist.argv;
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)) {
optimist.showHelp();
yargs.showHelp();
} else {
Precompiler.cli(opts);
}
Expand Down

0 comments on commit 1e1831f

Please sign in to comment.