diff options
Diffstat (limited to 'node_modules/jest-util/build/validateCLIOptions.js')
-rw-r--r-- | node_modules/jest-util/build/validateCLIOptions.js | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/node_modules/jest-util/build/validateCLIOptions.js b/node_modules/jest-util/build/validateCLIOptions.js new file mode 100644 index 000000000..5c20feabb --- /dev/null +++ b/node_modules/jest-util/build/validateCLIOptions.js @@ -0,0 +1,69 @@ +/** + * Copyright (c) 2014, Facebook, Inc. All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + * + */ + +'use strict'; + +const chalk = require('chalk');var _require = + + + + +require('jest-validate');const ValidationError = _require.ValidationError,format = _require.format,createDidYouMeanMessage = _require.createDidYouMeanMessage; + +const BULLET = chalk.bold('\u25cf'); + +const createCLIValidationError = ( +unrecognizedOptions, +allowedOptions) => +{ + let title = `${BULLET} Unrecognized CLI Parameter`; + let message; + const comment = + ` ${chalk.bold('CLI Options Documentation')}:\n` + + ` http://facebook.github.io/jest/docs/cli.html\n`; + + if (unrecognizedOptions.length === 1) { + const unrecognized = unrecognizedOptions[0]; + const didYouMeanMessage = createDidYouMeanMessage( + unrecognized, + Array.from(allowedOptions)); + + message = ` Unrecognized option ${chalk.bold(format(unrecognized))}.` + ( + didYouMeanMessage ? ` ${didYouMeanMessage}` : ''); + } else { + title += 's'; + message = + ` Following options were not recognized:\n` + + ` ${chalk.bold(format(unrecognizedOptions))}`; + } + + return new ValidationError(title, message, comment); +}; + +const validateCLIOptions = (argv, options) => { + const yargsSpecialOptions = ['$0', '_', 'help', 'h']; + const allowedOptions = Object.keys(options).reduce((acc, option) => + acc. + add(option). + add(options[option].alias || option), + new Set(yargsSpecialOptions)); + + const unrecognizedOptions = Object.keys(argv).filter(arg => + !allowedOptions.has(arg)); + + + if (unrecognizedOptions.length) { + throw createCLIValidationError(unrecognizedOptions, allowedOptions); + } + + return true; +}; + +module.exports = validateCLIOptions;
\ No newline at end of file |