UNPKG

trm-core

Version:

TRM (Transport Request Manager) Core

125 lines (124 loc) 6.06 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()); }); }; 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); }) };