2020-03-18 17:51:39 -04:00

60 lines
1.5 KiB
TypeScript

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`
});
}
}