UNPKG

@commercelayer/cli

Version:
56 lines (55 loc) 2.28 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const core_1 = require("@oclif/core"); const available_1 = require("./available"); const cli_core_1 = require("@commercelayer/cli-core"); class PluginsLatest extends core_1.Command { static description = 'show latest version of available plugins'; static examples = [ '$ commercelayer plugins:latest', '$ cl plugins:latest resources' ]; static flags = { beta: core_1.Flags.boolean({ char: 'b', description: 'retrieve latest version from beta channel' }) }; static args = { plugin: core_1.Args.string({ description: 'the name of the plugin', required: false }) }; async run() { const { args, flags } = await this.parse(PluginsLatest); const beta = flags.beta || false; const pluginInfo = (0, available_1.getPluginInfo)(args.plugin); if (!pluginInfo && args.plugin) this.error(`Plugin not available: ${cli_core_1.clColor.msg.error(args.plugin)}`); const availablePlugins = (0, available_1.getAvailablePlugins)().filter(p => p.enabled && !p.hidden); const plugins = pluginInfo ? [pluginInfo] : availablePlugins; if (plugins.length === 0) { this.log('\nNo available plugins\n'); this.exit(); } this.log(); core_1.ux.action.start(`Fetching plugins${beta ? ' [beta]' : ''}`); const output = []; for (const plugin of plugins) { const pluginEntry = plugin.plugin; const channel = beta ? 'beta' : 'latest'; const latest = await fetch(`https://registry.npmjs.org/${pluginEntry}/${channel}`) .then(async (response) => response.json()) .catch(() => { this.error('Unable to fetch latest plugins, please retry later'); }); const version = latest.version; output.push(`${pluginEntry}: ${cli_core_1.clColor.dim(version)}`); } core_1.ux.action.stop(); const formattedOutput = output.sort().join('\n'); this.log(); this.log(formattedOutput); this.log(); return formattedOutput; } } exports.default = PluginsLatest;