nx/scripts/documentation/generators/generate-cnw-documentation.ts

67 lines
1.5 KiB
TypeScript

import * as chalk from 'chalk';
import {
generateMarkdownFile,
generateOptionsMarkdown,
getCommands,
parseCommand,
ParsedCommand,
} from '../utils';
const importFresh = require('import-fresh');
export async function generateCnwDocumentation(
commandsOutputDirectory: string
) {
process.env.NX_GENERATE_DOCS_PROCESS = 'true';
console.log(
`\n${chalk.blue(
'i'
)} Generating Documentation for Create Nx Workspace Command`
);
const { commandsObject } = importFresh(
'../../../packages/create-nx-workspace/bin/create-nx-workspace'
);
const command = getCommands(commandsObject)['$0'];
const parsedCommand = await parseCommand('create-nx-workspace', command);
const markdown = generateMarkdown(parsedCommand);
generateMarkdownFile(commandsOutputDirectory, markdown);
delete process.env.NX_GENERATE_DOCS_PROCESS;
console.log(
`${chalk.green(
'✓'
)} Generated Documentation for Create Nx Workspace Command`
);
}
function generateMarkdown(command: ParsedCommand) {
let template = `
---
title: "${command.name} - CLI command"
description: "${command.description}"
---
# ${command.name}
${command.description}
## Usage
\`\`\`bash
${command.commandString}
\`\`\`
Install \`create-nx-workspace\` globally to invoke the command directly, or use \`npx create-nx-workspace\`, \`yarn create nx-workspace\`, or \`pnpx create-nx-workspace\`.\n
`;
template += generateOptionsMarkdown(command);
return {
name: command.name,
template,
};
}