trm-client
Version:
TRM (Transport Request Manager) Client
197 lines (196 loc) • 9.49 kB
JavaScript
;
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);
}
});
}