UNPKG

zcatalyst-cli

Version:

Command Line Tool for CATALYST

85 lines (84 loc) 5.11 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 path_1 = require("path"); const prompt_1 = __importDefault(require("../../../../prompt")); const npm_install_1 = __importDefault(require("../../../dependencies/npm-install")); const package_json_1 = __importDefault(require("../../../dependencies/package-json")); const fn_utils_1 = require("../../../../fn-utils"); 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 integ_1 = require("../../../../fn-utils/lib/integ"); const runtime_1 = __importDefault(require("../../../../util_modules/constants/lib/runtime")); const functions_1 = require("../../../util/functions"); const browserLogic_1 = require("../../../../fn-utils/lib/browserLogic"); const browserLogic_2 = __importDefault(require("../../../../util_modules/constants/lib/browserLogic")); const node_1 = require("../../../../fn-utils/lib/node"); exports.default = (stack) => () => __awaiter(void 0, void 0, void 0, function* () { const fnType = runtime_store_1.default.get('context.functions.type'); const service = runtime_store_1.default.get('context.functions.integration.service', ''); const functionsDirPath = runtime_store_1.default.get('context.functions.dir_path'); yield fs_1.ASYNC.ensureDir(functionsDirPath); const framework = fnType === constants_1.FN_TYPE.browserLogic ? yield (0, browserLogic_1.getBrowserLogicFramework)('nodejs') : ''; const finalJson = Object.assign(Object.assign({}, (yield (0, package_json_1.default)(['name', 'main', 'author']))), { framework: framework.toLowerCase(), dependencies: JSON.stringify(browserLogic_2.default.nodejs[framework] || {}, null, '\t').replace(new RegExp('\n', 'g'), '\n\t'), stack }); const templatePath = (0, node_1.getTemplatePath)(fnType, service || framework || ''); const targetPath = (0, path_1.join)(functionsDirPath, finalJson.name); const dirExists = yield fs_1.ASYNC.dirExists(targetPath); const overwriteAns = dirExists ? yield prompt_1.default.ask(prompt_1.default.question('overwrite', 'Directory ' + (0, ansi_colors_1.underline)(finalJson.name) + ' already exists inside functions directory. Overwrite ?', { type: 'confirm', defaultAns: false })) : { overwrite: true }; if (!overwriteAns.overwrite) { (0, index_1.warning)('Skipping functions node setup...'); return; } dirExists && (yield fs_1.ASYNC.deleteDir(targetPath).catch()); if (fnType === constants_1.FN_TYPE.integration) { yield (0, integ_1.copyIntegHandlers)(templatePath, targetPath, runtime_1.default.language.node.value); } else { yield fs_1.ASYNC.copyDir(templatePath, targetPath); } yield fs_1.ASYNC.rename((0, path_1.join)(targetPath, constants_1.FILENAME.functions.node_main), () => finalJson.main); const placeHolders = Object.assign(Object.assign({}, constants_1.PLACEHOLDER.functions.node_package), { stack: constants_1.PLACEHOLDER.catalyst_config.stack }); const placeholderArr = []; const replaceArr = []; Object.keys(placeHolders).forEach((key) => { placeholderArr.push(placeHolders[key]); if (key === 'name') { finalJson[key] = finalJson[key].toLowerCase(); } replaceArr.push(typeof finalJson[key] === 'string' ? finalJson[key] : JSON.stringify(finalJson[key])); }); yield fs_1.ASYNC.findAndReplace(targetPath)(placeholderArr, replaceArr); const integ_config = runtime_store_1.default.get('context.functions.integration.config', ''); yield fn_utils_1.fnUtils.common.findAndReplaceConfigProps(targetPath, { stack, type: fnType, integ_config, integ_handler: '' }); fnType === constants_1.FN_TYPE.integration ? yield (0, npm_install_1.default)(targetPath, true) : yield (0, npm_install_1.default)(targetPath); (0, functions_1.fillFunctionsInitPayload)(targetPath, finalJson.name, stack, fnType); return targetPath; });