mobile-cli-lib
Version:
common lib used by different CLI
58 lines (57 loc) • 2.58 kB
JavaScript
;
var helpers_1 = require("../../helpers");
var PrintPluginsService = (function () {
function PrintPluginsService($errors, $logger, $prompter) {
this.$errors = $errors;
this.$logger = $logger;
this.$prompter = $prompter;
this._page = 1;
}
PrintPluginsService.prototype.printPlugins = function (pluginsSource, options) {
var _this = this;
return (function () {
if (!pluginsSource.hasPlugins()) {
_this.$logger.warn("No plugins found.");
return;
}
var count = options.count || PrintPluginsService.COUNT_OF_PLUGINS_TO_DISPLAY;
if (!helpers_1.isInteractive() || options.showAllPlugins) {
var allPlugins = pluginsSource.getAllPlugins().wait();
_this.displayTableWithPlugins(allPlugins);
return;
}
var pluginsToDisplay = pluginsSource.getPlugins(_this._page++, count).wait();
var shouldDisplayMorePlugins = true;
_this.$logger.out("Available plugins:");
do {
_this.displayTableWithPlugins(pluginsToDisplay);
if (pluginsToDisplay.length < count) {
return;
}
shouldDisplayMorePlugins = _this.$prompter.confirm("Load more plugins?").wait();
pluginsToDisplay = pluginsSource.getPlugins(_this._page++, count).wait();
if (!pluginsToDisplay || pluginsToDisplay.length < 1) {
return;
}
} while (shouldDisplayMorePlugins);
}).future()();
};
PrintPluginsService.prototype.displayTableWithPlugins = function (plugins) {
var data = [];
data = this.createTableCells(plugins);
var table = this.createPluginsTable(data);
this.$logger.out(table.toString());
};
PrintPluginsService.prototype.createPluginsTable = function (data) {
var headers = ["Plugin", "Version", "Author", "Description"];
var table = helpers_1.createTable(headers, data);
return table;
};
PrintPluginsService.prototype.createTableCells = function (plugins) {
return _.map(plugins, function (plugin) { return [plugin.name, plugin.version, plugin.author || "", plugin.description || ""]; });
};
PrintPluginsService.COUNT_OF_PLUGINS_TO_DISPLAY = 10;
return PrintPluginsService;
}());
exports.PrintPluginsService = PrintPluginsService;
$injector.register("printPluginsService", PrintPluginsService);