UNPKG

zcatalyst-cli

Version:

Command Line Tool for CATALYST

88 lines (87 loc) 4.44 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 index_1 = require("../util_modules/logger/index"); const index_js_1 = require("../fn-utils/index.js"); const index_js_2 = __importDefault(require("../error/index.js")); const index_js_3 = require("../util_modules/constants/index.js"); const project_js_1 = require("../util_modules/project.js"); const index_js_4 = require("../util_modules/fs/index.js"); const utils_1 = require("../serve/server/lib/master/utils"); const ansi_colors_1 = require("ansi-colors"); const compile_js_1 = require("../fn-utils/lib/java/compile.js"); const index_js_5 = require("../shell/prepare/languages/index.js"); const caller_js_1 = require("./caller.js"); const runtime_store_1 = __importDefault(require("../runtime-store")); const stream_1 = require("stream"); const throbber_1 = __importDefault(require("../throbber")); exports.default = (target, input) => __awaiter(void 0, void 0, void 0, function* () { const buildFolder = (0, project_js_1.resolveProjectPath)(index_js_3.FOLDERNAME.build); try { (0, index_1.info)(); (0, index_1.info)((0, ansi_colors_1.bold)('=> Starting function execution')); (0, index_1.info)(` name: ${(0, ansi_colors_1.green)(target.name)} | type: ${(0, ansi_colors_1.magenta)(target.type ? index_js_3.REMOTE_REF.functions.type[target.type] : '')} | stack: ${(0, ansi_colors_1.cyan)(target.stack || '')}`); (0, index_1.info)(); if (yield index_js_4.ASYNC.isPathExists(buildFolder)) { try { (0, index_1.debug)('Build folder already exists, staring cleanup'); yield index_js_4.ASYNC.deleteDir(buildFolder); } catch (err) { throw new index_js_2.default('Error running pre cleanup', { original: err, exit: 1, errorId: 'SERVE-2', arg: [(0, ansi_colors_1.bold)(index_js_3.FOLDERNAME.build), ansi_colors_1.italic.red(buildFolder)] }); } } utils_1.serverEvent.emit('start'); yield index_js_1.fnUtils.common.executeHook({ prefix: 'pre', command: 'serve' }); throbber_1.default.getInstance().add('function_serve_' + target.name, { text: `preparing function [${target.name}]` }); const [_nodeFns, javaFns, _pythonFns] = yield (0, index_js_5.prepareFunctions)([target]); javaFns && (0, compile_js_1.printCompilationLog)(javaFns); const debugPort = runtime_store_1.default.get(`context.port.debug.${target.type}.${target.name}`, -1); const caller = new caller_js_1.Caller({ type: 'functions', target, httpPort: -1, debugPort, restarting: false, isAlive: null }, new stream_1.EventEmitter()); utils_1.serverEvent.once('stop', () => caller.kill()); yield caller.call(input); utils_1.serverEvent.emit('stop'); yield index_js_4.ASYNC.deleteDir(buildFolder).catch(); yield index_js_1.fnUtils.common.executeHook({ prefix: 'post', command: 'serve' }); (0, index_1.success)('execute complete'); (0, index_1.info)(); } catch (e) { index_js_4.ASYNC.deleteDir(buildFolder).catch(); utils_1.serverEvent.emit('stop'); if (typeof e === 'number') { (0, index_1.debug)('Execute function program termination by code: ', 130); } else { throw e; } } finally { utils_1.serverEvent.emit('close'); } });