indexr
Version:
Automated dynamic indexes for your ES6+ source code.
104 lines (71 loc) • 3.18 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; /* eslint-disable max-len */
exports.default = cli;
var _fs = require('fs');
var _fs2 = _interopRequireDefault(_fs);
var _path = require('path');
var _path2 = _interopRequireDefault(_path);
var _commander = require('commander');
var _cliflags = require('../cliflags');
var _cliflags2 = _interopRequireDefault(_cliflags);
var _extendedHelp = require('./extendedHelp');
var _extendedHelp2 = _interopRequireDefault(_extendedHelp);
var _camelcase = require('camelcase');
var _camelcase2 = _interopRequireDefault(_camelcase);
var _lodash = require('lodash.flow');
var _lodash2 = _interopRequireDefault(_lodash);
var _lodash3 = require('lodash.flatten');
var _lodash4 = _interopRequireDefault(_lodash3);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
var cliflagsFlat = (0, _lodash4.default)(_cliflags2.default);
var importJSON = function importJSON(jsonPath) {
return JSON.parse(_fs2.default.readFileSync(jsonPath, 'utf-8'));
};
var pkg = importJSON(_path2.default.resolve(__dirname, '../../../package.json'));
// extract a property map from table of the form
// {namePropertyOnTable:commanderLongName}
function extractPropMap(table) {
var flags = function flags(entry) {
return entry.flags;
};
var extractLongTag = function extractLongTag(value) {
return value.match(/--([a-zA-Z0-9-_]+)/)[0];
};
var camel = function camel(value) {
return (0, _camelcase2.default)(value);
};
var extractFlagName = (0, _lodash2.default)(flags, extractLongTag, camel);
var extractName = function extractName(entry) {
return entry.name || extractFlagName(entry);
};
return table.reduce(function (memo, entry) {
return _extends({}, memo, _defineProperty({}, extractName(entry), extractFlagName(entry)));
}, {});
}
// pick the keys from the object
// returning an object with mapped prop keys
function pickByMap(obj, map) {
return Object.keys(map).reduce(function (memo, key) {
var val = obj[map[key]];
return val ? _extends({}, memo, _defineProperty({}, key, val)) : memo;
}, {});
}
function cli(argv) {
var command = new _commander.Command();
var program = (0, _extendedHelp2.default)(command.version('Indexr v' + pkg.version).usage('<rootFolder> [options]'), cliflagsFlat);
program.parse(argv);
if (program.args.length === 0) return program.help();
// prepare input for consumption
var inputFolder = program.args[0];
var map = extractPropMap(cliflagsFlat);
var options = pickByMap(program, map);
return {
inputFolder: inputFolder,
options: options
};
}
module.exports = exports['default'];