UNPKG

zcatalyst-cli

Version:

Command Line Tool for CATALYST

152 lines (151 loc) 6.89 kB
'use strict'; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const ansi_colors_1 = require("ansi-colors"); const integ_1 = require("../../../fn-utils/lib/integ"); const prompt_1 = __importDefault(require("../../../prompt")); const runtime_store_1 = __importDefault(require("../../../runtime-store")); const constants_1 = require("../../../util_modules/constants"); const fs_1 = require("../../../util_modules/fs"); const index_1 = require("../../../util_modules/logger/index"); const option_1 = require("../../../util_modules/option"); const common_1 = require("../../util/common"); const languages_1 = __importDefault(require("./languages")); const catalyst_details_1 = __importDefault(require("../../../endpoints/lib/catalyst-details")); const path_1 = require("path"); const signals_1 = require("../../../signals"); const config_1 = require("../../../util_modules/config"); const cliq_1 = __importDefault(require("../../../event_generate/integration/cliq")); const error_1 = __importDefault(require("../../../error")); exports.default = () => __awaiter(void 0, void 0, void 0, function* () { const currentCmd = (0, option_1.getCurrentCommand)(); const functionsDirPath = config_1.functionsConfig.source(); const catalystDetailsAPI = new catalyst_details_1.default(); const integServicesPromise = catalystDetailsAPI .getDetails('integration_services') .catch((err) => (0, index_1.debug)('Error feting integ services: ', err)); runtime_store_1.default.set('context.functions.dir_path', functionsDirPath); if (currentCmd === 'init' || currentCmd === 'functions:setup') { (0, index_1.message)('A directory ' + ansi_colors_1.cyan.bold(constants_1.FOLDERNAME.functions) + ' will be created with a catalyst function pre-configured.\n'); const folderExits = yield fs_1.ASYNC.dirExists(functionsDirPath); const overwriteAns = folderExits ? yield prompt_1.default.ask(prompt_1.default.question('overwrite', 'Directory ' + (0, ansi_colors_1.underline)(constants_1.FOLDERNAME.functions) + ' already exists. Overwrite ?', { type: 'confirm', defaultAns: false })) : { overwrite: true }; if (!overwriteAns.overwrite) { (0, index_1.warning)('skipping function setup'); return; } yield fs_1.ASYNC.deleteDir(functionsDirPath).catch(); } const fnTypeChoices = [ prompt_1.default.choice('BasicIO', { value: constants_1.FN_TYPE.basic, short: 'basicIO' }), prompt_1.default.choice('AdvancedIO', { value: constants_1.FN_TYPE.advanced, short: 'advancedIO' }), prompt_1.default.choice('Event', { value: constants_1.FN_TYPE.event, short: 'event' }), prompt_1.default.choice('Cron', { value: constants_1.FN_TYPE.cron, short: 'cron' }), prompt_1.default.choice('Browser Logic', { id: 'browser_logic', value: constants_1.FN_TYPE.browserLogic, short: 'browser logic' }), prompt_1.default.choice('Job', { value: constants_1.FN_TYPE.job, short: 'job' }) ]; const integServicesRes = yield integServicesPromise; const integServices = integServicesRes === null || integServicesRes === void 0 ? void 0 : integServicesRes.integration_services; if (integServices && integServices.length > 0) { fnTypeChoices.push(prompt_1.default.choice('Integration', { value: constants_1.FN_TYPE.integration, short: 'integration' })); } const fnTypeAns = yield prompt_1.default.ask(prompt_1.default.question('type', 'Which type of function do you like to create?', { type: 'list', choices: fnTypeChoices })); runtime_store_1.default.set('context.functions.type', fnTypeAns.type); if (fnTypeAns.type === constants_1.FN_TYPE.integration && integServices) { yield (0, integ_1.integHelper)(integServices); } const runtimeAns = yield (0, common_1.getRuntimePromptAnswer)('Which runtime do you prefer to write your function?', fnTypeAns.type); const targetPath = yield languages_1.default[runtimeAns.lang](runtimeAns.runtime)(); if (!targetPath) { return; } const inputsJson = {}; switch (fnTypeAns.type) { case constants_1.FN_TYPE.cron: { inputsJson.test_cron_input = { test_param: 'test_value' }; break; } case constants_1.FN_TYPE.event: { const jsonContent = yield (0, signals_1.generate)('cache', 'cache_item_created'); inputsJson.test_event_cache_put = jsonContent; break; } case constants_1.FN_TYPE.job: { inputsJson.test_job = { params: { key: 'value' } }; break; } case constants_1.FN_TYPE.integration: { const _integService = runtime_store_1.default.get('context.functions.integration.service'); if (_integService === 'ZohoCliq') { const cliqData = yield (0, cliq_1.default)('bot,welcome_handler'); if (!cliqData) { throw new error_1.default('Invalid input data generate for cliq integration function', { exit: 2 }); } inputsJson.bot_welcome_handler = JSON.parse(cliqData); } else { inputsJson.convokraft_test_input = { todo: 'welcome' }; } break; } default: return; } return Object.keys(inputsJson).length ? fs_1.ASYNC.writeJSONFile((0, path_1.join)(targetPath, constants_1.FILENAME.catalyst_inputs), inputsJson, { spaces: 2 }) : Promise.resolve(); });