@sdesktop/s
Version:
Serverless devs tool, just for desktop.
193 lines • 18.1 kB
JavaScript
"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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