UNPKG

mobile-cli-lib

Version:
58 lines (57 loc) 2.58 kB
"use strict"; 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);