UNPKG

jovo-cli

Version:
177 lines 7.01 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; result["default"] = mod; return result; }; Object.defineProperty(exports, "__esModule", { value: true }); const command_1 = require("@oclif/command"); const chalk_1 = __importDefault(require("chalk")); const jovo_cli_core_1 = require("jovo-cli-core"); const listr_1 = __importDefault(require("listr")); const lodash_1 = __importDefault(require("lodash")); const path = __importStar(require("path")); const utils_1 = require("../utils"); const { ANSWER_CANCEL, promptOverwriteProject } = utils_1.prompts; const { isValidProjectName, isValidTemplate } = utils_1.validators; const { buildTask, deployTask } = utils_1.tasks; class New extends command_1.Command { async run() { try { utils_1.platforms.addCliOptions('new', New.flags); utils_1.addBaseCliOptions(New.flags); const { args, flags } = this.parse(New); if (!utils_1.platforms.validateCliOptions('new', flags)) { return; } if (!isValidProjectName(args.directory) || !isValidTemplate(flags.template)) { return; } this.log(`\n jovo new: ${New.description}`); this.log(chalk_1.default.grey(' >> Learn more: https://jovo.tech/docs/cli/new\n')); const project = jovo_cli_core_1.getProject(); await project.init(); const tasks = new listr_1.default([], { renderer: new utils_1.JovoCliRenderer(), collapse: false, }); const config = { types: [], debug: flags.debug, }; args.directory = args.directory || flags.template; if (project.hasExistingProject(args.directory)) { const { overwrite } = await promptOverwriteProject(); if (overwrite === ANSWER_CANCEL) { return; } else { utils_1.deleteFolderRecursive(path.join(process.cwd(), args.directory)); } } config.types = flags.build ? [flags.build] : []; if (flags.deploy && !flags.build) { this.log('Please use --build if you use --deploy'); } this.log(" I'm setting everything up"); this.log(); const language = flags.typescript ? 'typescript' : flags.language || jovo_cli_core_1.DEFAULT_LANGUAGE; lodash_1.default.merge(config, { language, projectName: args.directory, locales: project.getLocales(flags.locale), template: flags.template || jovo_cli_core_1.DEFAULT_TEMPLATE, invocation: flags.invocation, endpoint: flags.endpoint || jovo_cli_core_1.DEFAULT_ENDPOINT, }); for (const type of config.types) { const platform = utils_1.platforms.get(type, config.stage); lodash_1.default.merge(config, platform.getPlatformConfigValues(project, flags)); } project.setProjectPath(args.directory); tasks.add({ title: `Creating new directory /${chalk_1.default.white.bold(config.projectName)}`, task() { return project.createEmptyProject(); }, }); tasks.add({ title: `Downloading and extracting template ${chalk_1.default.white.bold(config.template)}`, async task(ctx) { await project.downloadAndExtract(ctx.projectName, ctx.template, ctx.locales[0], ctx.language); await project.updateModelLocale(ctx.locales[0]); }, }); if (flags.build) { tasks.add({ title: 'Building project...', task(ctx) { return new listr_1.default(buildTask(ctx)); }, }); } if (flags.deploy) { tasks.add({ title: 'Deploying project...', task(ctx) { return new listr_1.default(deployTask(ctx)); }, }); } tasks.add({ title: 'Installing npm dependencies...', enabled() { return !flags['skip-npminstall']; }, async task() { return project.runNpmInstall(); }, }); await tasks.run(config); this.log(); this.log('Installation completed.'); this.log(); } catch (err) { this.error(`There was a problem:\n${err}`); } } } exports.New = New; New.description = 'Creates a new Jovo project.'; New.examples = [ 'jovo new jovo-example-project', 'jovo new jovo-example-project --locale de-DE --language typescript', ]; New.flags = { 'template': command_1.flags.string({ char: 't', description: 'Name of the template.', default: 'helloworld', parse(template) { return template.replace('/', '-'); }, }), 'locale': command_1.flags.string({ char: 'l', description: 'Locale of the language model\n<en-US|de-DE|etc>', default: 'en-US', }), 'build': command_1.flags.string({ description: 'Runs build after new', options: utils_1.platforms.getAllAvailable(), }), 'deploy': command_1.flags.boolean({ description: 'Runs deploy after new/build.', }), 'invocation': command_1.flags.string({ description: 'Sets the invocation name.', }), 'skip-npminstall': command_1.flags.boolean({ description: 'Skips npm install.', }), 'language': command_1.flags.string({ description: 'Sets the programming language of the template.', options: ['javascript', 'typescript'], }), 'endpoint': command_1.flags.string({ description: 'Type of endpoint', default: jovo_cli_core_1.ENDPOINT_JOVOWEBHOOK, options: [jovo_cli_core_1.ENDPOINT_JOVOWEBHOOK, jovo_cli_core_1.ENDPOINT_NGROK, jovo_cli_core_1.ENDPOINT_NONE], }), 'typescript': command_1.flags.boolean({ description: 'Sets the programming language of the template to TypeScript.', default: false, }), 'debug': command_1.flags.boolean({ hidden: true, default: false, }), }; New.args = [{ name: 'directory' }]; //# sourceMappingURL=new.js.map