UNPKG

@sdesktop/s

Version:

Serverless devs tool, just for desktop.

193 lines 18.1 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 __generator = (this && this.__generator) || function (thisArg, body) { var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; function verb(n) { return function (v) { return step([n, v]); }; } function step(op) { if (f) throw new TypeError("Generator is already executing."); while (_) try { if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; if (y = 0, t) op = [op[0] & 2, t.value]; switch (op[0]) { case 0: case 1: t = op; break; case 4: _.label++; return { value: op[1], done: false }; case 5: _.label++; y = op[1]; op = [0]; continue; case 7: op = _.ops.pop(); _.trys.pop(); continue; default: if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } if (t[2]) _.ops.pop(); _.trys.pop(); continue; } op = body.call(thisArg, _); } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; } }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.CommandManager = void 0; var js_yaml_1 = __importDefault(require("js-yaml")); var specification_1 = require("../../specification"); var utils_1 = require("../../utils"); var component_1 = require("../component"); var checkTemplateFile = utils_1.common.checkTemplateFile; var getServiceConfig = specification_1.version.getServiceConfig, getServiceConfigDetail = specification_1.version.getServiceConfigDetail; var CommandManager = /** @class */ (function () { function CommandManager(templateFile, method, customerCommandName, params) { this.templateFile = templateFile; this.method = method; this.customerCommandName = customerCommandName; this.deployParams = params; } CommandManager.prototype.assemblyProjectConfig = function (parse, projectName, parsedObj) { return __awaiter(this, void 0, void 0, function () { var realVariables, projectConfig; return __generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, parse.getRealVariables(parsedObj)]; case 1: realVariables = _a.sent(); projectConfig = getServiceConfig(realVariables, projectName); projectConfig.appName = realVariables.name; // app name; projectConfig.ProjectName = projectName; if (this.deployParams) { projectConfig.params = this.deployParams; projectConfig.Params = this.deployParams; // compatible with old specifications } return [2 /*return*/, projectConfig]; } }); }); }; CommandManager.prototype.init = function () { return __awaiter(this, void 0, void 0, function () { var data, templateFile, outPutData, parse, parsedObj, projectConfig, name_1, componentExecute, tempResult, e_1, errorMessage, params, realVariables, analysis, executeOrderList, componentList, tempResult, item, outResult, errorMessage, e_2, errorMessage; return __generator(this, function (_a) { switch (_a.label) { case 0: data = { isOk: true, customerCommand: '', component: '', result: '' }; _a.label = 1; case 1: _a.trys.push([1, 13, , 14]); utils_1.logger.info('Start ...'); templateFile = checkTemplateFile(this.templateFile); if (!templateFile) return [3 /*break*/, 11]; outPutData = {}; parse = new specification_1.Parse(templateFile); parsedObj = parse.getOriginalParsedObj(); if (!this.customerCommandName) return [3 /*break*/, 7]; return [4 /*yield*/, this.assemblyProjectConfig(parse, this.customerCommandName, parsedObj)]; case 2: projectConfig = _a.sent(); name_1 = getServiceConfigDetail(projectConfig).name; data.component = name_1; data.customerCommand = this.customerCommandName; componentExecute = new component_1.ComponentExeCute(projectConfig, this.method, parsedObj.edition); _a.label = 3; case 3: _a.trys.push([3, 5, , 6]); return [4 /*yield*/, componentExecute.init()]; case 4: tempResult = _a.sent(); if (tempResult) { outPutData[projectConfig.ProjectName] = tempResult; } return [3 /*break*/, 6]; case 5: e_1 = _a.sent(); data.isOk = false; errorMessage = e_1.message.includes("componentInstance[method] is not a function") ? "Project ".concat(projectConfig.ProjectName, " does not include [").concat(this.method, "] method") : e_1.message; throw new Error("Project ".concat(projectConfig.ProjectName, " failed to execute:\n \n \uD83D\uDCDD Message: ").concat(errorMessage, "\n \uD83E\uDDED You can get help for this component by [s ").concat(projectConfig.ProjectName, " -h]\n \uD83D\uDE08 If you have questions, please tell us: https://github.com/Serverless-Devs/Serverless-Devs/issues\n")); case 6: return [3 /*break*/, 10]; case 7: params = this.deployParams || ''; return [4 /*yield*/, parse.getRealVariables(parsedObj)]; case 8: realVariables = _a.sent(); analysis = new specification_1.Analysis(realVariables, parse.dependenciesMap); executeOrderList = analysis.getProjectOrder(); data.component = executeOrderList.join(','); utils_1.logger.info("It is detected that your project has the following projects < ".concat(executeOrderList.join(','), " > to be execute")); componentList = (0, component_1.generateSynchronizeComponentExeList)({ list: executeOrderList, parse: parse, parsedObj: parsedObj, method: this.method, params: params }, this.assemblyProjectConfig.bind(this)); return [4 /*yield*/, (0, component_1.synchronizeExecuteComponentList)(componentList)]; case 9: tempResult = _a.sent(); for (item in tempResult) { if (executeOrderList.includes(item) && tempResult[item]) { outPutData[item] = tempResult[item]; } } _a.label = 10; case 10: outResult = js_yaml_1.default.dump(JSON.parse(JSON.stringify(outPutData))); data.result = outResult; if (process.env['s-execute-file']) { data.isOk = false; utils_1.logger.error("All projects were not deployed successfully.\n \n ".concat(js_yaml_1.default.dump(JSON.parse(process.env['s-execute-file'])['Error']), " \uD83D\uDE08 If you have questions, please tell us: https://github.com/Serverless-Devs/Serverless-Devs/issues\n")); process.send({ action: 'execute-command', data: data }); process.exit(-1); } else { process.send({ action: 'execute-command', data: data }); utils_1.logger.success(Object.keys(outPutData).length === 0 ? "End of method: ".concat(this.method) : outResult); } return [3 /*break*/, 12]; case 11: data.isOk = false; errorMessage = "Failed to execute:\n\n \u274C Message: Cannot find s.yaml / s.yml / template.yaml / template.yml file, please check the directory ".concat(this.templateFile, "\n \uD83E\uDDED If you want to use Serverless Devs, you should have a s.yaml or use [s cli] command.\n 1\uFE0F\u20E3 Yaml document: https://github.com/Serverless-Devs/docs/blob/master/zh/yaml.md\n 2\uFE0F\u20E3 Cli document: [s cli -h]\n \uD83D\uDE08 If you have questions, please tell us: https://github.com/Serverless-Devs/Serverless-Devs/issues\n"); data.result = errorMessage; utils_1.logger.error(errorMessage); process.send({ action: 'execute-command', data: data }); process.exit(-1); _a.label = 12; case 12: return [3 /*break*/, 14]; case 13: e_2 = _a.sent(); errorMessage = "Failed to execute:\n\n \u274C Message: ".concat(e_2.message, "\n \uD83D\uDE08 If you have questions, please tell us: https://github.com/Serverless-Devs/Serverless-Devs/issues\n"); data.result = errorMessage; utils_1.logger.error(errorMessage); process.send({ action: 'execute-command', data: data }); process.exit(-1); return [3 /*break*/, 14]; case 14: return [2 /*return*/]; } }); }); }; return CommandManager; }()); exports.CommandManager = CommandManager; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWFuZC1tYW5hZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvcmUvY29tbWFuZC9jb21tYW5kLW1hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsb0RBQTJCO0FBQzNCLHFEQUErRDtBQUMvRCxxQ0FBNkM7QUFDN0MsMENBS3NCO0FBRWQsSUFBQSxpQkFBaUIsR0FBSyxjQUFNLGtCQUFYLENBQVk7QUFDN0IsSUFBQSxnQkFBZ0IsR0FBNkIsdUJBQU8saUJBQXBDLEVBQUUsc0JBQXNCLEdBQUssdUJBQU8sdUJBQVosQ0FBYTtBQUc3RDtJQUdJLHdCQUNjLFlBQW9CLEVBQ3BCLE1BQWMsRUFDZCxtQkFBNEIsRUFDdEMsTUFBWTtRQUhGLGlCQUFZLEdBQVosWUFBWSxDQUFRO1FBQ3BCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQVM7UUFHdEMsSUFBSSxDQUFDLFlBQVksR0FBRyxNQUFNLENBQUM7SUFDL0IsQ0FBQztJQUVLLDhDQUFxQixHQUEzQixVQUE0QixLQUFZLEVBQUUsV0FBbUIsRUFBRSxTQUFjOzs7Ozs0QkFDbkQscUJBQU0sS0FBSyxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxFQUFBOzt3QkFBdkQsYUFBYSxHQUFHLFNBQXVDO3dCQUN2RCxhQUFhLEdBQVEsZ0JBQWdCLENBQUMsYUFBYSxFQUFFLFdBQVcsQ0FBQyxDQUFDO3dCQUN4RSxhQUFhLENBQUMsT0FBTyxHQUFHLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxZQUFZO3dCQUN4RCxhQUFhLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQzt3QkFDeEMsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFOzRCQUNuQixhQUFhLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7NEJBQ3pDLGFBQWEsQ0FBQyxN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