Skip to main content
Glama
nrwl

Nx MCP Server

Official
by nrwl
get-generator-options.ts2.25 kB
import { readJsonFile } from '@nx-console/shared-file-system'; import { Option } from '@nx-console/shared-schema'; import { normalizeSchema } from '@nx-console/shared-schema'; import { nxWorkspace } from '@nx-console/shared-nx-workspace-info'; import { lspLogger } from '@nx-console/language-server-utils'; export async function getGeneratorOptions( workspacePath: string, collectionName: string, generatorName: string, generatorPath: string, ): Promise<Option[]> { const generatorSchema = await readJsonFile( generatorPath, undefined, lspLogger, ); const workspaceDefaults = await readWorkspaceJsonDefaults(workspacePath); const defaults = workspaceDefaults && workspaceDefaults[collectionName] && workspaceDefaults[collectionName][generatorName]; return await normalizeSchema(generatorSchema.json, defaults); } async function readWorkspaceJsonDefaults(workspacePath: string): Promise<any> { const { nxJson } = await nxWorkspace(workspacePath, lspLogger); let defaults = nxJson.generators; if (!defaults) { try { /** * This could potentially fail if we're in an Angular CLI project without schematics being part of angular.json * Default the default to {} on the catch */ defaults = nxJson.generators || {}; } catch (e) { defaults = {}; } } const collectionDefaults = Object.keys(defaults).reduce( (collectionDefaultsMap: any, key) => { if (key.includes(':')) { const [collectionName, generatorName] = key.split(':'); if (!collectionDefaultsMap[collectionName]) { collectionDefaultsMap[collectionName] = {}; } collectionDefaultsMap[collectionName][generatorName] = defaults?.[key]; } else { const collectionName = key; if (!collectionDefaultsMap[collectionName]) { collectionDefaultsMap[collectionName] = {}; } Object.keys(defaults?.[collectionName] ?? {}).forEach( (generatorName) => { collectionDefaultsMap[collectionName][generatorName] = defaults?.[collectionName][generatorName]; }, ); } return collectionDefaultsMap; }, {}, ); return collectionDefaults; }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/nrwl/nx-console'

If you have feedback or need assistance with the MCP directory API, please join our Discord server