12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- 'use strict';
- /**
- * Contains "command" code for "one-and-dones"--options passed
- * to Mocha which cause it to just dump some info and exit.
- * See {@link module:lib/cli/one-and-dones.ONE_AND_DONE_ARGS ONE_AND_DONE_ARGS} for more info.
- * @module
- * @private
- */
- const align = require('wide-align');
- const Mocha = require('../mocha');
- /**
- * Dumps a sorted list of the enumerable, lower-case keys of some object
- * to `STDOUT`.
- * @param {Object} obj - Object, ostensibly having some enumerable keys
- * @ignore
- * @private
- */
- const showKeys = obj => {
- console.log();
- const keys = Object.keys(obj);
- const maxKeyLength = keys.reduce((max, key) => Math.max(max, key.length), 0);
- keys
- .filter(
- key => /^[a-z]/.test(key) && !obj[key].browserOnly && !obj[key].abstract
- )
- .sort()
- .forEach(key => {
- const description = obj[key].description;
- console.log(
- ` ${align.left(key, maxKeyLength + 1)}${
- description ? `- ${description}` : ''
- }`
- );
- });
- console.log();
- };
- /**
- * Handlers for one-and-done options
- * @namespace
- * @private
- */
- exports.ONE_AND_DONES = {
- /**
- * Dump list of built-in interfaces
- * @private
- */
- interfaces: () => {
- showKeys(Mocha.interfaces);
- },
- /**
- * Dump list of built-in reporters
- * @private
- */
- reporters: () => {
- showKeys(Mocha.reporters);
- }
- };
- /**
- * A Set of all one-and-done options
- * @type Set<string>
- * @private
- */
- exports.ONE_AND_DONE_ARGS = new Set(
- ['help', 'h', 'version', 'V'].concat(Object.keys(exports.ONE_AND_DONES))
- );
|