UNPKG

skypager-repl

Version:
298 lines (224 loc) 8.75 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.cli = exports.defaultTemplate = undefined; var _toConsumableArray2 = require('babel-runtime/helpers/toConsumableArray'); var _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2); var _extends2 = require('babel-runtime/helpers/extends'); var _extends3 = _interopRequireDefault(_extends2); var _promise = require('babel-runtime/core-js/promise'); var _promise2 = _interopRequireDefault(_promise); var _prettyCli = require('pretty-cli'); var _prettyCli2 = _interopRequireDefault(_prettyCli); var _figlet = require('figlet'); var _figlet2 = _interopRequireDefault(_figlet); var _nodeEmoji = require('node-emoji'); var _nodeEmoji2 = _interopRequireDefault(_nodeEmoji); var _cliTable = require('cli-table'); var _cliTable2 = _interopRequireDefault(_cliTable); var _sample = require('lodash/sample'); var _sample2 = _interopRequireDefault(_sample); var _colors = require('colors'); var _colors2 = _interopRequireDefault(_colors); var _chunk = require('lodash/chunk'); var _chunk2 = _interopRequireDefault(_chunk); var _prompt = require('prompt'); var _prompt2 = _interopRequireDefault(_prompt); var _isArray = require('lodash/isArray'); var _isArray2 = _interopRequireDefault(_isArray); var _isObject = require('lodash/isObject'); var _isObject2 = _interopRequireDefault(_isObject); var _isString = require('lodash/isString'); var _isString2 = _interopRequireDefault(_isString); var _cliSpinner = require('cli-spinner'); var _cliSpinner2 = _interopRequireDefault(_cliSpinner); var _multispinner = require('multispinner'); var _multispinner2 = _interopRequireDefault(_multispinner); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var defaultTemplate = exports.defaultTemplate = { info: function info(message) { return message; }, warning: function warning(message) { return message; }, error: function error(message) { return _nodeEmoji2.default.get('boom') + ' ' + message; }, success: function success(message) { return message; }, note: function note(message) { return message; } }; var cli = exports.cli = (0, _prettyCli2.default)({ template: defaultTemplate }); cli.cmd = function () { return cli.addCustomMethod.apply(cli, arguments); }; exports.default = cli; cli.addCustomMethod('print', function () { var messages = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; var indentationLevel = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0; var beforePadding = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0; var afterPadding = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0; if ((0, _isString2.default)(messages)) { messages = messages.split('\n'); } else if ((0, _isArray2.default)(messages)) { // } else if ((0, _isObject2.default)(messages)) { messages = require('util').inspect(messages).split('\n'); } if (beforePadding > 0) { console.log(Array(beforePadding).join('\n')); } messages.filter(function (message) { return typeof message === 'string' && message.length > 0; }).forEach(function (message) { console.log(indentationLevel > 0 ? '' + Array(indentationLevel).join(' ') + message : message); }); if (afterPadding > 0) { console.log(Array(afterPadding).join('\n')); } }); var tables = {}; Object.defineProperty(cli, 'helpers', { enumerable: false, value: { colors: _colors2.default, figlet: _figlet2.default, Table: _cliTable2.default, emoji: _nodeEmoji2.default, colors: _colors2.default, prompt: _prompt2.default, Spinner: _cliSpinner2.default } }); Object.defineProperty(cli, 'ask', { enumerable: false, value: function value() { var schema = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; if (!_prompt2.default.started) { _prompt2.default.message = process.env.SKYPAGER_CLI_PROMPT_MESSAGE || '';_prompt2.default.delimeter = process.env.SKYPAGER_CLI_PROMPT_DELIMETER || '', _prompt2.default.start(); } return new _promise2.default(function (resolve, reject) { _prompt2.default.get({ properties: schema }, function (err, results) { return err ? reject(err) : resolve(results); }); }); } }); Object.defineProperty(cli, 'tables', { enumerable: false, get: function get() { return tables; } }); Object.defineProperty(cli, 'availableFonts', { enumerable: false, get: function get() { return require('figlet').fontsSync(); } }); Object.defineProperty(cli, 'figlet', { enumerable: false, value: _figlet2.default }); Object.defineProperty(cli, 'prompt', { enumerable: false, value: _prompt2.default }); Object.defineProperty(cli, 'emoji', { enumerable: false, value: _nodeEmoji2.default }); Object.defineProperty(cli, 'icon', { enumerable: false, value: function value() { return _nodeEmoji2.default.get.apply(_nodeEmoji2.default, arguments); } }); Object.defineProperty(cli, 'spinner', { enumerable: false, value: _cliSpinner2.default }); Object.defineProperty(cli, 'colors', { enumerable: false, value: _colors2.default }); Object.defineProperty(cli, 'random', { enumerable: false, value: { get color() { return (0, _sample2.default)([_colors2.default.red, _colors2.default.cyan, _colors2.default.magenta, _colors2.default.green, _colors2.default.blue, _colors2.default.white, _colors2.default.grey, _colors2.default.yellow]); }, get font() { return (0, _sample2.default)(require('figlet').fontsSync()); } } }); cli.addCustomMethod('stripedBanner', function () { var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'Skypager'; var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; var _options$colors = options.colors, colors = _options$colors === undefined ? {} : _options$colors, _options$font = options.font, font = _options$font === undefined ? cli.random.font : _options$font; var color = function color(text, chunkId) { var c = colors[chunkId] = colors[chunkId] || cli.random.color; return c(text); }; return cli.figlet.textSync(value, { font: font }).split('\n').map(function (line) { return (0, _chunk2.default)(line.split(''), value.length).map(function (section, i) { return color(section.join(''), i); }).join(''); }).join('\n'); }); cli.addCustomMethod('randomBanner', function (value) { var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; var _options$font2 = options.font, font = _options$font2 === undefined ? cli.random.font : _options$font2, _options$indent = options.indent, indent = _options$indent === undefined ? 2 : _options$indent, _options$debug = options.debug, debug = _options$debug === undefined ? false : _options$debug; if (debug) { console.log('Using font', font); } var banner = _figlet2.default.textSync(value, (0, _extends3.default)({ font: font }, options.text || {})).split('\n').map(function (line) { return cli.random.color(line); }).join('\n'); cli.print(banner, indent, 1, 1); }); cli.addCustomMethod('multiSpinner', function (spinners, options) { return new _multispinner2.default(spinners, options); }); cli.addCustomMethod('banner', function (value) { var indent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2; var beforePadding = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1; var afterPadding = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 1; cli.print(_figlet2.default.textSync(value || 'Skypager', { font: 'Slant' }), indent, beforePadding, afterPadding); }); cli.addCustomMethod('displayTable', function (tableName, data) { var indent = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 2; var beforePadding = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 1; var afterPadding = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1; var table = tables[tableName]; table.push.apply(table, (0, _toConsumableArray3.default)(data)); cli.print(table.toString(), indent, beforePadding, afterPadding); }); cli.addCustomMethod('defineTable', function (tableName) { var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; return tables[tableName] = new _cliTable2.default(params); }); cli.addCustomMethod('clear', function () { return process.stdout.write('\x1bc'); }); //# sourceMappingURL=cli.js.map