skypager-repl
Version:
an awesome repl
298 lines (224 loc) • 8.75 kB
JavaScript
;
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