UNPKG

grapi-cli

Version:

a cli tool to generate loopback 4 applications with extra features like caching & fuzzy search

40 lines (39 loc) 2.05 kB
import { Args, Command, Flags } from '@oclif/core'; import chalk from 'chalk'; import { processOptions, execute, standardFlags, prompt } from '../utils/index.js'; export default class Extension extends Command { static description = 'generate extension.'; static args = { name: Args.string({ description: 'Optional name of the extension given as an argument to the command.', }), }; static flags = { ...standardFlags, description: Flags.string({ description: 'project root directory for the extension.' }), outDir: Flags.string({ description: 'Project root directory for the extension.' }), eslint: Flags.boolean({ description: 'Add ESLint to LoopBack4 extension project.' }), prettier: Flags.boolean({ description: 'Add Prettier to LoopBack4 extension project.' }), mocha: Flags.boolean({ description: 'Add Mocha to LoopBack4 extension projectAdd @loopback/build module’s script set to LoopBack4 extension project.' }), loopbackBuild: Flags.boolean({ description: 'Add @loopback/build module’s script set to LoopBack4 extension project.' }), vscode: Flags.boolean({ description: 'Add VSCode config files to LoopBack4 application project.' }), }; async run() { const parsed = await this.parse(Extension); if (!parsed.flags.config) return prompt('extension', parsed.flags); let options = processOptions(parsed.flags); let configs = ''; if (Object.keys(options).length) { configs = ` --config='${JSON.stringify(options)}' `; } let argument = ''; if (parsed.args.name) { argument = ` ${parsed.args.name}`; } const command = `lb4 extension${argument}${configs}--yes`; const executed = await execute(command, 'generating extension.'); if (executed.stderr) console.log(chalk.bold(chalk.green(executed.stderr))); if (executed.stdout) console.log(chalk.bold(chalk.green(executed.stdout))); } }