import yargs = require('yargs'); import { appRootPath } from '../utils/app-root'; import { output } from '../utils/output'; import { fetchCommunityPlugins, fetchCorePlugins, getInstalledPluginsFromNodeModules, listCommunityPlugins, listCorePlugins, listInstalledPlugins, listPluginCapabilities } from '../utils/plugins'; export interface YargsListArgs extends yargs.Arguments, ListArgs {} interface ListArgs { plugin?: string; } export const list = { command: 'list [plugin]', describe: 'Lists installed plugins, capabilities of installed plugins and other available plugins.', builder: (yargs: yargs.Argv) => yargs.positional('plugin', { default: null, description: 'The name of an installed plugin to query' }), handler: listHandler }; /** * List available plugins or capabilities within a specific plugin * * @remarks * * Must be run within an Nx workspace * */ async function listHandler(args: YargsListArgs) { if (args.plugin) { listPluginCapabilities(args.plugin); } else { const corePlugins = await fetchCorePlugins(); const communityPlugins = await fetchCommunityPlugins(); const installedPlugins = getInstalledPluginsFromNodeModules( appRootPath, corePlugins, communityPlugins ); listInstalledPlugins(installedPlugins); listCorePlugins(installedPlugins, corePlugins); listCommunityPlugins(installedPlugins, communityPlugins); output.note({ title: `Use "nx list [plugin]" to find out more` }); } }