trm-core
Version:
TRM (Transport Request Manager) Core
125 lines (124 loc) • 6.06 kB
JavaScript
;
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());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.setInstallDevclass = void 0;
const logger_1 = require("../../logger");
const commons_1 = require("../../commons");
const systemConnector_1 = require("../../systemConnector");
const inquirer_1 = require("../../inquirer");
const registry_1 = require("../../registry");
function _validateDevclass(input, packagesNamespace) {
const sInput = input.trim().toUpperCase();
if (sInput.length > 30) {
return `Package name must not exceede 30 characters limit.`;
}
if (packagesNamespace.startsWith('/')) {
if (!sInput.startsWith(packagesNamespace)) {
return `Package name must use namespace "${packagesNamespace}".`;
}
else {
return true;
}
}
else {
return true;
}
}
exports.setInstallDevclass = {
name: 'set-install-devclass',
filter: (context) => __awaiter(void 0, void 0, void 0, function* () {
if (context.rawInput.installData.installDevclass.keepOriginal) {
logger_1.Logger.log(`Skipping set devclass replacements (user input)`, true);
return false;
}
else {
return true;
}
}),
run: (context) => __awaiter(void 0, void 0, void 0, function* () {
var _a;
logger_1.Logger.log('Set install devclass step', true);
if (context.rawInput.installData.installDevclass.keepOriginal) {
context.rawInput.installData.installDevclass.replacements = context.runtime.packageTransportsData.tdevc.map(o => {
return {
originalDevclass: o.devclass,
installDevclass: o.devclass
};
});
}
else {
if (context.rawInput.installData.installDevclass.replacements.length <= 0) {
context.rawInput.installData.installDevclass.replacements = yield systemConnector_1.SystemConnector.getInstallPackages(context.rawInput.packageData.name, context.rawInput.packageData.registry);
}
}
var rootDevclass = (_a = context.rawInput.installData.installDevclass.replacements.find(o => o.originalDevclass === context.runtime.originalData.hierarchy.devclass)) === null || _a === void 0 ? void 0 : _a.installDevclass;
if (!rootDevclass) {
rootDevclass = context.runtime.originalData.hierarchy.devclass;
}
const packagesNamespace = (0, commons_1.getPackageNamespace)(rootDevclass);
var inq1Prompts = [];
context.runtime.packageTransportsData.tdevc.forEach(t => {
const replacement = context.rawInput.installData.installDevclass.replacements.find(o => o.originalDevclass === t.devclass);
if (!replacement) {
if (context.rawInput.contextData.noInquirer) {
const automaticValue = _validateDevclass(t.devclass, packagesNamespace);
if (automaticValue === true) {
context.rawInput.installData.installDevclass.replacements.push({
originalDevclass: t.devclass,
installDevclass: t.devclass
});
}
else {
throw new Error(automaticValue);
}
}
else {
inq1Prompts.push({
type: "input",
name: t.devclass,
default: t.devclass,
message: `Input name for package "${t.devclass}"`,
validate: (input) => {
return _validateDevclass(input, packagesNamespace);
}
});
}
}
else {
const devclassValid = _validateDevclass(replacement.installDevclass, packagesNamespace);
if (devclassValid !== true) {
throw new Error(devclassValid);
}
}
});
if (inq1Prompts.length > 0) {
const inq1 = yield inquirer_1.Inquirer.prompt(inq1Prompts);
Object.keys(inq1).forEach(k => {
context.rawInput.installData.installDevclass.replacements = context.rawInput.installData.installDevclass.replacements.filter(o => o.originalDevclass !== k);
context.rawInput.installData.installDevclass.replacements.push({
originalDevclass: k,
installDevclass: inq1[k].trim().toUpperCase()
});
});
}
logger_1.Logger.loading(`Updating install data...`);
var installDevc = [];
context.rawInput.installData.installDevclass.replacements.forEach(o => {
installDevc.push({
package_name: context.rawInput.packageData.name,
package_registry: context.rawInput.packageData.registry.getRegistryType() === registry_1.RegistryType.PUBLIC ? registry_1.PUBLIC_RESERVED_KEYWORD : context.rawInput.packageData.registry.endpoint,
original_devclass: o.originalDevclass,
install_devclass: o.installDevclass
});
});
yield systemConnector_1.SystemConnector.setInstallDevc(installDevc);
})
};