UNPKG

@magidoc/cli

Version:

Magidoc CLI application responsible for generating GraphQL documentation websites.

48 lines (45 loc) 2.01 kB
import { CONFIG_FILE_OPTION, PACKAGE_MANAGER_OPTION, CLEAN_OPTION, STACKTRACE_OPTION } from '../utils/commander.js'; import { loadFileConfiguration } from '../utils/loadConfigFile.js'; import { printSeparator, printInfo, printLine } from '../utils/log.js'; import { cyan } from '../utils/outputColors.js'; import { withStacktrace } from '../utils/withStacktrace.js'; import generate from './index.js'; const DEFAULT_CONFIG_FILE = './magidoc.mjs'; function buildGenerateCommand(program) { program .command('generate') .description('Generates a full static website using a template. Using this command gives you access to a limited range of customization. If you wish to customize the website further than what is available, use the eject command.') .addOption(CONFIG_FILE_OPTION()) .addOption(PACKAGE_MANAGER_OPTION()) .addOption(CLEAN_OPTION()) .addOption(STACKTRACE_OPTION()) .action(async ({ packageManager, file, stacktrace, clean }) => { const fileConfiguration = await loadFileConfiguration(file, stacktrace); if (!fileConfiguration) { process.exitCode = 1; return; } await withStacktrace(stacktrace, async () => { await generate({ ...fileConfiguration, packageManager, clean, }); printPostExecution(file, fileConfiguration); }); }); } function printPostExecution(configFile, fileConfiguration) { printSeparator(); printInfo(`Website generated at ${cyan(fileConfiguration.website.output)}`); printLine(); if (configFile === DEFAULT_CONFIG_FILE) { printInfo(`Run ${cyan('magidoc preview')} to preview you build locally.`); } else { printInfo(`Run ${cyan(`magidoc preview --file ${configFile}`)} to preview your build locally.`); } printLine(); } export { DEFAULT_CONFIG_FILE, buildGenerateCommand as default }; //# sourceMappingURL=command.js.map