feat(CLI): add -q (quiet) and -m (mute) mode to CLI

-q supresses all normal messages from the output, but still reports errors.
-m mutes all messages, even errors.
This commit is contained in:
Estevao Soares dos Santos 2017-01-09 02:26:24 +00:00
parent 4d78633c4d
commit f3b86f06cc
4 changed files with 29 additions and 6 deletions

View File

@ -12,6 +12,18 @@ yargs
alias: 'help', alias: 'help',
description: 'Show help' description: 'Show help'
}) })
.option('q', {
alias: 'quiet',
description: 'Quiet mode. Only print errors',
type: 'boolean',
default: false
})
.option('m', {
alias: 'mute',
description: 'Mute mode. Does not print anything',
type: 'boolean',
default: false
})
.usage('Usage: showdown <command> [options]') .usage('Usage: showdown <command> [options]')
.demand(1, 'You must provide a valid command') .demand(1, 'You must provide a valid command')
.command('makehtml', 'Converts markdown into html') .command('makehtml', 'Converts markdown into html')

View File

@ -46,6 +46,18 @@ yargs.reset()
alias : 'flavor', alias : 'flavor',
describe: 'Run with a predetermined flavor of options. Default is vanilla', describe: 'Run with a predetermined flavor of options. Default is vanilla',
type: 'string' type: 'string'
})
.option('q', {
alias: 'quiet',
description: 'Quiet mode. Only print errors',
type: 'boolean',
default: false
})
.option('m', {
alias: 'mute',
description: 'Mute mode. Does not print anything',
type: 'boolean',
default: false
}); });
// load showdown default options // load showdown default options
@ -70,7 +82,7 @@ function run() {
* MSG object * MSG object
* @type {Messenger} * @type {Messenger}
*/ */
messenger = new Messenger(msgMode), messenger = new Messenger(msgMode, argv.q, argv.m),
read = (readMode === 'stdin') ? readFromStdIn : readFromFile, read = (readMode === 'stdin') ? readFromStdIn : readFromFile,
write = (writeMode === 'stdout') ? writeToStdOut : writeToFile, write = (writeMode === 'stdout') ? writeToStdOut : writeToFile,
enc = argv.encoding || 'utf8', enc = argv.encoding || 'utf8',
@ -106,8 +118,6 @@ function run() {
// write the output // write the output
messenger.printMsg('Writing data to ' + writeMode + '...'); messenger.printMsg('Writing data to ' + writeMode + '...');
write(html, append); write(html, append);
messenger.printMsg('\n');
messenger.okExit(); messenger.okExit();
function parseOptions(flavor) { function parseOptions(flavor) {

View File

@ -1,8 +1,8 @@
function Messenger(writeMode, supress, mute) { function Messenger(writeMode, supress, mute) {
'use strict'; 'use strict';
writeMode = writeMode || 'stderr'; writeMode = writeMode || 'stderr';
supress = !!supress; supress = (!!supress || !!mute);
mute = (!!supress || !!mute); mute = !!mute;
this._print = (writeMode === 'stdout') ? console.log : console.error; this._print = (writeMode === 'stdout') ? console.log : console.error;
this.errorExit = function (e) { this.errorExit = function (e) {
@ -15,6 +15,7 @@ function Messenger(writeMode, supress, mute) {
this.okExit = function () { this.okExit = function () {
if (!mute) { if (!mute) {
this._print('\n');
this._print('DONE!'); this._print('DONE!');
} }
process.exit(0); process.exit(0);

View File

@ -6,7 +6,7 @@ describe('showdown cli', function () {
if (semver.gt(process.versions.node, '0.12.0')) { if (semver.gt(process.versions.node, '0.12.0')) {
var execSync = require('child_process').execSync; var execSync = require('child_process').execSync;
it('basic stdin stdout', function () { it('basic stdin stdout', function () {
var otp = execSync(cmd + ' makehtml', { var otp = execSync(cmd + ' makehtml -q', {
encoding: 'utf8', encoding: 'utf8',
input: '**foo**' input: '**foo**'
}); });