From 93129bfb647b1a3996b9c37b17341ef3d4ccbdb8 Mon Sep 17 00:00:00 2001 From: Alynx Zhou Date: Thu, 31 Oct 2019 14:54:28 +0800 Subject: [PATCH] Replace yargs with commander --- bin/precompile | 92 ++++++++++++++++++++------------------------------ package.json | 2 +- 2 files changed, 38 insertions(+), 56 deletions(-) diff --git a/bin/precompile b/bin/precompile index 37904b75..132076f9 100755 --- a/bin/precompile +++ b/bin/precompile @@ -1,70 +1,52 @@ #!/usr/bin/env node -var path = require('path'); +var commander = require('commander'); var precompile = require('../src/precompile').precompile; var Environment = require('../src/environment').Environment; var lib = require('../src/lib'); -var yargs = require('yargs') - - .usage('$0 [-f|--force] [-a|--filters ] [-n|--name ] [-i|--include ] [-x|--exclude ] [-w|--wrapper ] ') - .wrap(80) - - .describe('help', 'Display this help message') - .boolean('help') - .alias('h', 'help') - .alias('?', 'help') - - .describe('force', 'Force compilation to continue on error') - .boolean('force') - .alias('f', 'force') - - .describe('filters', 'Give the compiler a comma-delimited list of asynchronous filters, required for correctly generating code') - .string('filters') - .alias('a', 'filters') - - .describe('name', 'Specify the template name when compiling a single file') - .string('name') - .alias('n', 'n') - - .describe('include', 'Include a file or folder which match the regex but would otherwise be excluded. You can use this flag multiple times') - .string('include' ) - .default('include', ['\\.html$', '\\.jinja$']) - .alias('i', 'include') - - .describe('exclude', 'Exclude a file or folder which match the regex but would otherwise be included. You can use this flag multiple times') - .string('exclude' ) - .default('exclude', []) - .alias('x', 'exclude') - - .describe('wrapper', 'Load a external plugin to change the output format of the precompiled templates (for example, "-w custom" will load a module named "nunjucks-custom")') - .string('wrapper') - .alias('w', 'wrapper') - - .demand(1); - -var argv = yargs.argv; +var cmdpath = null; + +commander + .name('precompile') + .usage('[-f|--force] [-a|--filters ] [-n|--name ] [-i|--include ] [-x|--exclude ] [-w|--wrapper ] ') + .arguments('') + .helpOption('-?, -h, --help', 'Display this help message') + .option('-f, --force', 'Force compilation to continue on error') + .option('-a, --filters ', 'Give the compiler a comma-delimited list of asynchronous filters, required for correctly generating code') + .option('-n, --name ', 'Specify the template name when compiling a single file') + .option('-i, --include ', 'Include a file or folder which match the regex but would otherwise be excluded. You can use this flag multiple times', concat, ['\\.html$', '\\.jinja$']) + .option('-x, --exclude ', 'Exclude a file or folder which match the regex but would otherwise be included. You can use this flag multiple times', concat, []) + .option('-w, --wrapper ', 'Load a external plugin to change the output format of the precompiled templates (for example, "-w custom" will load a module named "nunjucks-custom")') + .action(function (path) { + cmdpath = path; + }) + .parse(process.argv); + +function concat(value, previous) { + return previous.concat(value); +} -if (argv.help) { - yargs.showHelp(); - process.exit(1); +if (cmdpath == null) { + commander.outputHelp(); + console.error('\nerror: no path given'); + process.exit(1); } var env = new Environment([]); -lib.each([].concat(argv.filters).join(',').split(','), function(name) { - env.addFilter(name.trim(), function() {}, true); +lib.each([].concat(commander.filters).join(',').split(','), function (name) { + env.addFilter(name.trim(), function () {}, true); }); -if(argv.wrapper) { - argv.wrapper = require('nunjucks-' + argv.wrapper).wrapper; +if (commander.wrapper) { + commander.wrapper = require('nunjucks-' + commander.wrapper).wrapper; } -console.log(precompile(argv._[0], { - env : env, - force : argv.force, - name : argv.name, - wrapper: argv.wrapper, - - include : [].concat(argv.include), - exclude : [].concat(argv.exclude) +console.log(precompile(cmdpath, { + env : env, + force : commander.force, + name : commander.name, + wrapper: commander.wrapper, + include : [].concat(commander.include), + exclude : [].concat(commander.exclude) })); diff --git a/package.json b/package.json index b7512467..31e153c5 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "dependencies": { "a-sync-waterfall": "^1.0.0", "asap": "^2.0.3", - "yargs": "^3.32.0" + "commander": "^3.0.2" }, "browser": "./browser/nunjucks.js", "devDependencies": {