UNPKG

jovo-cli

Version:
102 lines 4.14 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const command_1 = require("@oclif/command"); const fs_extra_1 = require("fs-extra"); const jovo_cli_core_1 = require("jovo-cli-core"); const Listr = require("listr"); const utils_1 = require("../utils"); const chalk_1 = __importDefault(require("chalk")); const { promptOverwriteHandler, ANSWER_SEPERATE, ANSWER_CANCEL } = utils_1.prompts; const { scaffold } = utils_1.scaffolder; const srcPath = './models/'; let destPath = './src/app.js'; class Scaffold extends command_1.Command { async run() { const { flags } = this.parse(Scaffold); if (!isValidModel()) { return; } this.log(`\n jovo scaffold: ${Scaffold.description}`); this.log(chalk_1.default.grey(' >> Learn more: https://jovo.tech/docs/cli/scaffold\n')); const project = jovo_cli_core_1.getProject(); await project.init(); const isTsProject = await project.isTypeScriptProject(); if (isTsProject) { destPath = './src/app.ts'; } if (!flags.overwrite && fs_extra_1.existsSync(destPath)) { const answers = await promptOverwriteHandler(); if (answers.overwriteHandler === ANSWER_SEPERATE) { if (isTsProject) { destPath = './src/app.scaffold.ts'; } else { destPath = './src/app.scaffold.js'; } } if (answers.overwriteHandler === ANSWER_CANCEL) { return; } } const tasks = new Listr([ { title: `Scaffolding handler in ${destPath}...`, async task() { await new Promise((res) => { setTimeout(() => { const models = fs_extra_1.readdirSync(srcPath); const intents = []; let handler = '{\n\tLAUNCH() {\n\n\t},'; for (const file of models) { const model = JSON.parse(fs_extra_1.readFileSync(`${srcPath}${file}`, { encoding: 'utf-8' })); for (const { name } of model.intents) { if (!intents.includes(name)) { intents.push(name); handler += `\n\n\t${name}() {\n\n\t},`; } } } handler += '\n\n\tEND() {\n\n\t},\n}'; const model = scaffold({ handler, type: isTsProject ? 'ts' : 'js' }); fs_extra_1.writeFileSync(destPath, model); res(); }, 500); }); }, }, ], { renderer: new utils_1.JovoCliRenderer(), collapse: false, }); try { await tasks.run(); this.log(); this.log(`\n\nSuccessfully scaffolded your handler in '${destPath}'.`); this.log(); } catch (err) { this.error(`There was a problem:\n${err}`); } } } exports.Scaffold = Scaffold; Scaffold.description = 'Build a scaffold handler out of your existing language model.'; Scaffold.examples = ['jovo scaffold', 'jovo scaffold --overwrite']; Scaffold.flags = { overwrite: command_1.flags.boolean({ description: 'Forces overwriting of an existing handler file.', }), }; function isValidModel() { if (fs_extra_1.existsSync(srcPath)) { if (fs_extra_1.readdirSync(srcPath).length > 0) { return true; } } console.log(`No language model available in '${srcPath}'. Please create at least one language model.`); return false; } //# sourceMappingURL=scaffold.js.map