@magidoc/cli
Version:
Magidoc CLI application responsible for generating GraphQL documentation websites.
48 lines (45 loc) • 2.01 kB
JavaScript
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