60 lines
1.5 KiB
TypeScript
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`
|
|
});
|
|
}
|
|
}
|