From cf39eda9e781d9ba1eb98cd8c19f977bda2d47e4 Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Tue, 21 Jan 2020 16:52:37 -0500 Subject: [PATCH] Better messaging for unknown options --- src/wizard.js | 26 +++++++++++++++++++++++++- src/writer.js | 2 +- 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/src/wizard.js b/src/wizard.js index 932b9f9..159a2d8 100644 --- a/src/wizard.js +++ b/src/wizard.js @@ -3,6 +3,7 @@ const commander = require('commander'); const fs = require('fs'); const inquirer = require('inquirer'); const path = require('path'); +const process = require('process'); const package = require('../package.json'); @@ -137,7 +138,30 @@ function parseCommandLine(argv) { commander.option(flag, input.description, coerce, input.default); }); - return commander.parse(argv); + commander.exitOverride(); + let program; + try { + program = commander.parse(argv); + } catch (ex) { + switch (ex.code) { + case 'commander.version': + case 'commander.helpDisplayed': + // not really an error, but should quit here + process.exit(); + break; + case 'commander.unknownOption': + // provide more helpful information for unknown options + console.log('\nIt could be a typo or the option might be obsolete. For help:'); + console.log('- Run the script again with no options and let the wizard set them for you.'); + console.log('- Or check documentation at https://github.com/lonekorean/wordpress-export-to-markdown.'); + process.exit(); + break; + default: + throw ex; + } + } + + return program; } function coerceBoolean(value) { diff --git a/src/writer.js b/src/writer.js index 3e875f3..bf7723d 100644 --- a/src/writer.js +++ b/src/writer.js @@ -20,7 +20,7 @@ async function processPayloadsPromise(payloads, loadFunc, config) { console.log(chalk.green('[OK]') + ' ' + payload.name); resolve(); } catch (ex) { - console.error(chalk.red('[FAILED]') + ' ' + payload.name + ' ' + chalk.red('(' + ex.toString() + ')')); + console.log(chalk.red('[FAILED]') + ' ' + payload.name + ' ' + chalk.red('(' + ex.toString() + ')')); reject(); } }, payload.delay);