@commercelayer/cli
Version:
88 lines (87 loc) • 5.05 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.isPluginInstalled = exports.getInstalledPlugins = exports.getAvailablePlugins = exports.getPluginInfo = void 0;
const core_1 = require("@oclif/core");
const cli_core_1 = require("@commercelayer/cli-core");
const PLUGIN_PREFIX = '@commercelayer/cli-plugin-';
class PluginsAvailable extends core_1.Command {
static description = 'show all available Commerce Layer CLI plugins';
static examples = [
'$ commercelayer plugins:available',
];
static flags = {
hidden: core_1.Flags.boolean({
char: 'H',
description: 'show also enabled but hidden plugins',
hidden: true
}),
sort: core_1.Flags.boolean({
char: 'S',
description: 'order by plugin name'
})
};
async run() {
const { flags } = await this.parse(PluginsAvailable);
this.log(cli_core_1.clColor.style.title('\n-= Commerce Layer CLI available plugins =-\n'));
const availablePlugins = AvailablePlugins.filter(p => ((!p.hidden || flags.hidden) && p.enabled));
if (availablePlugins && (availablePlugins.length > 0)) {
if (flags.sort)
availablePlugins.sort((a, b) => a.name.localeCompare(b.name));
core_1.ux.Table.table(availablePlugins, {
key: { header: 'PLUGIN (KEY)', minWidth: 20, get: row => (row.hidden ? cli_core_1.clColor.dim : cli_core_1.clColor).blueBright(row.name) },
description: { header: 'DESCRIPTION', get: row => (row.hidden ? cli_core_1.clColor.dim(row.description) : row.description) },
}, {
printLine: cli_core_1.clUtil.log,
});
}
else
this.log(cli_core_1.clColor.italic('No available plugins'));
this.log();
}
}
exports.default = PluginsAvailable;
const AvailablePlugins = [
{ name: 'resources', plugin: '@commercelayer/cli-plugin-resources', description: 'CRUD operations on API resources', enabled: true },
{ name: 'seeder', plugin: '@commercelayer/cli-plugin-seeder', description: 'Organization data seeder', enabled: true },
{ name: 'imports', plugin: '@commercelayer/cli-plugin-imports', description: 'Organization imports manager', enabled: true },
{ name: 'webhooks', plugin: '@commercelayer/cli-plugin-webhooks', description: 'Organization webhooks analyzer', enabled: true },
{ name: 'orders', plugin: '@commercelayer/cli-plugin-orders', description: 'Organization orders management', enabled: true },
{ name: 'checkout', plugin: '@commercelayer/cli-plugin-checkout', description: 'Checkout URLs generation', enabled: true },
{ name: 'triggers', plugin: '@commercelayer/cli-plugin-triggers', description: 'Execute actions on resources', enabled: true },
{ name: 'token', plugin: '@commercelayer/cli-plugin-token', description: 'Manage Commerce Layer access tokens', enabled: true },
{ name: 'microstore', plugin: '@commercelayer/cli-plugin-microstore', description: 'Microstore URLs generation', enabled: true },
{ name: 'exports', plugin: '@commercelayer/cli-plugin-exports', description: 'Organization exports manager', enabled: true },
{ name: 'cleanups', plugin: '@commercelayer/cli-plugin-cleanups', description: 'Organization cleanups manager', enabled: true },
{ name: 'tags', plugin: '@commercelayer/cli-plugin-tags', description: 'Manage resources tags', enabled: true },
{ name: 'provisioning', plugin: '@commercelayer/cli-plugin-provisioning', description: 'Add support for Provisioning API', enabled: true },
{ name: 'links', plugin: '@commercelayer/cli-plugin-links', description: 'Manage links to resources', enabled: true },
{ name: 'metrics', plugin: '@commercelayer/cli-plugin-metrics', description: 'Add support for Metrics APIs', enabled: true, hidden: true }
];
const getPluginInfo = (pluginName) => {
let plugin;
if (pluginName) {
AvailablePlugins.filter(p => p.enabled).some(p => {
if ((pluginName === p.name) || (pluginName === p.plugin) || (`@commercelayer/${pluginName}` === p.plugin)) {
plugin = p;
return true;
}
return false;
});
}
return plugin;
};
exports.getPluginInfo = getPluginInfo;
const getAvailablePlugins = () => {
return AvailablePlugins;
};
exports.getAvailablePlugins = getAvailablePlugins;
const getInstalledPlugins = (config) => {
const installed = config.getPluginsList().filter(p => (p.type === 'user') && p.name.startsWith(PLUGIN_PREFIX)).map(p => p.name);
return AvailablePlugins.filter(p => installed.find(i => i === p.plugin) !== undefined);
};
exports.getInstalledPlugins = getInstalledPlugins;
const isPluginInstalled = (name, config) => {
const plugin = name.startsWith(PLUGIN_PREFIX) ? name : `${PLUGIN_PREFIX}${name}`;
return (getInstalledPlugins(config).findIndex(p => (p.plugin === plugin)) > -1);
};
exports.isPluginInstalled = isPluginInstalled;