UNPKG

indexr

Version:

Automated dynamic indexes for your ES6+ source code.

104 lines (71 loc) 3.18 kB
'use strict'; 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'];