UNPKG

trm-client

Version:

TRM (Transport Request Manager) Client

197 lines (196 loc) 9.49 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || (function () { var ownKeys = function(o) { ownKeys = Object.getOwnPropertyNames || function (o) { var ar = []; for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k; return ar; }; return ownKeys(o); }; return function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); __setModuleDefault(result, mod); return result; }; })(); 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.InquirerType = exports.LoggerType = void 0; exports.executeCommand = executeCommand; const commands = __importStar(require("../commands")); const systemAlias_1 = require("../systemAlias"); const logError_1 = require("./logError"); const checkTrmDependencies_1 = require("./checkTrmDependencies"); const checkCliUpdate_1 = require("./checkCliUpdate"); const trm_core_1 = require("trm-core"); const getLogFolder_1 = require("./getLogFolder"); const registryAlias_1 = require("../registryAlias"); const commons_1 = require("../commands/commons"); const trm_commons_1 = require("trm-commons"); var LoggerType; (function (LoggerType) { LoggerType["CLI"] = "CLI"; LoggerType["CLI_LOG"] = "CLI_LOG"; LoggerType["CONSOLE"] = "CONSOLE"; LoggerType["VOID"] = "VOID"; LoggerType["KEY"] = "VALUE"; })(LoggerType || (exports.LoggerType = LoggerType = {})); var InquirerType; (function (InquirerType) { InquirerType["CLI"] = "CLI"; })(InquirerType || (exports.InquirerType = InquirerType = {})); const _getLogger = (type, debug, logOutputFolder) => { if (!logOutputFolder || logOutputFolder.trim().toLowerCase() === 'default') { logOutputFolder = (0, getLogFolder_1.getLogFolder)(); } switch (type) { case LoggerType.CLI: return new trm_commons_1.CliLogger(debug); case LoggerType.CLI_LOG: return new trm_commons_1.CliLogFileLogger(logOutputFolder, debug); case LoggerType.CONSOLE: return new trm_commons_1.ConsoleLogger(debug); case LoggerType.VOID: return new trm_commons_1.DummyLogger(); default: throw new Error(`Unknown logger type "${type}". Possible values are ${Object.keys(LoggerType).map(k => LoggerType[k]).join(', ')}.`); } }; const _getInquirer = (type) => { switch (type) { case InquirerType.CLI: return new trm_commons_1.CliInquirer(); default: throw new Error(`Unknown inquirer type "${type}". Possible values are ${Object.keys(InquirerType).map(k => InquirerType[k]).join(', ')}.`); } }; function executeCommand(args) { return __awaiter(this, void 0, void 0, function* () { var exitCode; try { trm_commons_1.Inquirer.inquirer = _getInquirer(InquirerType.CLI); trm_commons_1.Logger.logger = _getLogger(args.logType, args.debug, args.logOutputFolder); if (!/^win/i.test(process.platform)) { trm_commons_1.Logger.warning(`Running on untested OS ${process.platform}! Some features aren't tested yet.`); } const requiresConnection = args.requiresConnection; const requiresTrmDependencies = args.requiresTrmDependencies; const requiresRegistry = args.requiresRegistry; const registryAuthBlacklist = args.registryAuthBlacklist; const ignoreRegistryUnreachable = args.ignoreRegistryUnreachable; yield (0, checkCliUpdate_1.checkCliUpdate)(true); if (requiresRegistry) { var registryAlias; var registry; if (args.registry) { registryAlias = registryAlias_1.RegistryAlias.get(args.registry); } else if (args.registryEndpoint) { registryAlias = registryAlias_1.RegistryAlias.getTemporaryInstance(args.registryEndpoint, args.registryAuth); } else { registryAlias = yield commands.pickRegistry(); } registry = registryAlias.getRegistry(); try { const registryPing = yield registry.ping(); if (registryPing.wallMessage) { if (registryAuthBlacklist.includes(registryPing.authenticationType)) { throw new Error(`This command is not supported by registry "${registry.name}".`); } trm_commons_1.Logger.registryResponse(registryPing.wallMessage); } } catch (e) { trm_commons_1.Logger.error(e, true); if (!ignoreRegistryUnreachable) { throw new Error(`Registry "${registry.name}" is unreachable.`); } } if (registryAlias.authData) { try { yield registry.authenticate(registryAlias.authData); } catch (e) { trm_commons_1.Logger.error(e, true); trm_commons_1.Logger.warning(`Registry "${registry.name}" login failed.`); } } commons_1.CommandContext.registry = registry; commons_1.CommandContext.hasRegistryAuthData = !!registryAlias.authData; trm_core_1.RegistryProvider.registry.push(registry); registryAlias_1.RegistryAlias.getAll().forEach(o => { var append = true; var aliasRegistry = registryAlias_1.RegistryAlias.get(o.alias).getRegistry(); trm_core_1.RegistryProvider.registry.forEach(k => { if (append) { append = !k.compare(aliasRegistry); } }); if (append) { trm_core_1.RegistryProvider.registry.push(aliasRegistry); } }); } if (requiresConnection) { var system; if (args.systemAlias) { system = systemAlias_1.SystemAlias.get(args.systemAlias).getConnection(); } else { const skipCreateAlias = ['createAlias', 'deleteAlias', 'alias']; system = (yield commands.connect(args, !skipCreateAlias.includes(args.command), args.addNoConnection)).connection; } yield system.connect(); trm_core_1.SystemConnector.systemConnector = system; if (requiresTrmDependencies) { yield (0, checkTrmDependencies_1.checkTrmDependencies)(args); } } var commandFn = args.command; if (!commands[commandFn]) { commandFn = `_${commandFn}`; if (!commands[commandFn]) { throw new Error(`Command "${args.command}" doesn't exist.`); } } yield commands[commandFn](args); if (trm_commons_1.Logger.logger instanceof trm_commons_1.CliLogger || trm_commons_1.Logger.logger instanceof trm_commons_1.CliLogFileLogger) { trm_commons_1.Logger.logger.forceStop(); } exitCode = 0; } catch (e) { yield (0, logError_1.logError)(e); exitCode = 1; } finally { if (trm_commons_1.Logger.logger instanceof trm_commons_1.CliLogFileLogger) { const sessionId = trm_commons_1.Logger.logger.getSessionId(); const logFilePath = trm_commons_1.Logger.logger.getFilePath(); console.log(`Log output "${logFilePath}" for session ID ${sessionId}.`); } process.exit(exitCode); } }); }