UNPKG

trm-client

Version:

TRM (Transport Request Manager) Client

200 lines (199 loc) 8.87 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()); }); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.info = info; const trm_core_1 = require("trm-core"); const utils_1 = require("../utils"); const commons_1 = require("./commons"); const fs_1 = require("fs"); const path_1 = __importDefault(require("path")); const get_root_path_1 = require("get-root-path"); const chalk_1 = __importDefault(require("chalk")); const semver_1 = require("semver"); const trm_commons_1 = require("trm-commons"); const _getDependencyVersion = (moduleName, rootModule = 'trm-client') => { var file; try { file = (0, fs_1.readFileSync)(path_1.default.join(get_root_path_1.rootPath, `/node_modules/${rootModule}/node_modules/${moduleName}/package.json`)); } catch (e) { file = (0, fs_1.readFileSync)(path_1.default.join(get_root_path_1.rootPath, `/node_modules/${moduleName}/package.json`)); } if (!file) { trm_commons_1.Logger.warning(`Library ${moduleName} (root ${rootModule}) was not found!`, true); } else { return JSON.parse(file.toString()).version; } }; const _getNodeRfcVersion = (npmGlobal) => { var file; try { file = (0, fs_1.readFileSync)(path_1.default.join(npmGlobal, `/node-rfc/package.json`)); } catch (e) { } if (!file) { trm_commons_1.Logger.warning(`Library node-rfc was not found!`, true); } else { return JSON.parse(file.toString()).version; } }; const _getNpmLatestForText = (packageName, installedVersion, text) => __awaiter(void 0, void 0, void 0, function* () { try { const latestVersion = yield (0, utils_1.getNpmPackageLatestVersion)(packageName); if ((0, semver_1.gte)(installedVersion, latestVersion)) { text += ` ${chalk_1.default.bgGreen('LATEST')}`; } else { text += ` ${chalk_1.default.bold('v' + latestVersion + ' available')}`; } } catch (e) { text += ` ${chalk_1.default.bgGray('Can\'t fetch latest version')}`; } return text; }); function info(commandArgs) { return __awaiter(this, void 0, void 0, function* () { trm_commons_1.Logger.loading(`Reading data...`); const npmGlobal = yield (0, trm_core_1.getNpmGlobalPath)(); const clientLatest = yield (0, utils_1.checkCliUpdate)(false); const clientVersion = (0, utils_1.getClientVersion)(); const clientDependencies = (0, utils_1.getClientNodeDependencies)(); const trmDependencies = (0, trm_core_1.getCoreTrmDependencies)(); const trmDependenciesInstances = commons_1.CommandContext.trmDependencies; const trmMissingDependencies = commons_1.CommandContext.missingTrmDependencies; const nodeRfcVersion = _getNodeRfcVersion(npmGlobal); const packages = yield commons_1.CommandContext.getSystemPackages(); const trmRest = packages.find(o => o.compareName("trm-rest") && o.compareRegistry(new trm_core_1.Registry(trm_core_1.PUBLIC_RESERVED_KEYWORD))); var nodeR3transVersion; try { nodeR3transVersion = _getDependencyVersion("node-r3trans", "trm-core"); if (!nodeR3transVersion) { throw new Error(); } } catch (e) { nodeR3transVersion = _getDependencyVersion("node-r3trans"); } var clientDependenciesTree = []; if (clientDependencies) { for (const d of Object.keys(clientDependencies).filter(k => k.startsWith('trm'))) { var dText = ``; var dInstalledVersion = _getDependencyVersion(d); if (dInstalledVersion) { dText = ` -> ${dInstalledVersion}`; dText = yield _getNpmLatestForText(d, dInstalledVersion, dText); } clientDependenciesTree.push({ text: `${d} ${clientDependencies[d]}${dText}`, children: [] }); } } var serverDependenciesTree = []; if (trmDependencies) { for (const d of Object.keys(trmDependencies)) { var dText = ``; const oTrmPackage = trmDependenciesInstances.find(o => o.compareName(d)); if (oTrmPackage) { var dInstalledVersion; try { dInstalledVersion = oTrmPackage.manifest.get().version; } catch (e) { dText = ` -> ${e.message}`; } if (dInstalledVersion) { dText = ` -> ${dInstalledVersion}`; try { const dLatestVersion = (yield oTrmPackage.fetchRemoteManifest('latest')).get().version; if ((0, semver_1.gte)(dInstalledVersion, dLatestVersion)) { dText += ` ${chalk_1.default.bgGreen('LATEST')}`; } else { dText += ` ${chalk_1.default.bold('v' + dLatestVersion + ' available')}`; } } catch (e) { dText += ` ${chalk_1.default.bgGray('Can\'t fetch latest version')}`; } } } else { const missingDependency = trmMissingDependencies.find(o => { if (typeof (o) === 'string') { if (o === d) { return o; } } else { if (o.compareName(d)) { return o; } } }); if (missingDependency) { try { dText = ` -> ${chalk_1.default.bgRed(missingDependency.manifest.get().version)}`; } catch (e) { dText = ` -> ${chalk_1.default.bgRed('Not found')}`; } } } serverDependenciesTree.push({ text: `${d} ${trmDependencies[d]}${dText}`, children: [] }); } } if (trmRest && trmRest.manifest) { serverDependenciesTree.push({ text: `trm-rest -> ${trmRest.manifest.get().version}`, children: [] }); } var clientChildrenTree = [{ text: `trm-client ${clientVersion} ${(0, semver_1.gte)(clientLatest.localVersion, clientLatest.latestVersion) ? chalk_1.default.bgGreen('LATEST') : chalk_1.default.bold('v' + clientLatest.latestVersion + ' available')}`, children: clientDependenciesTree }]; if (nodeRfcVersion) { clientChildrenTree.push({ text: yield _getNpmLatestForText('node-rfc', nodeRfcVersion, `node-rfc ${nodeRfcVersion}`), children: [] }); } if (nodeR3transVersion) { clientChildrenTree.push({ text: yield _getNpmLatestForText('node-r3trans', nodeR3transVersion, `node-r3trans ${nodeR3transVersion}`), children: [] }); } const clientTree = { text: chalk_1.default.bold(`Client`), children: clientChildrenTree }; trm_commons_1.Logger.tree(clientTree); const serverTree = { text: chalk_1.default.bold(`Server (${trm_core_1.SystemConnector.getDest()})`), children: serverDependenciesTree }; if (!(trm_core_1.SystemConnector.systemConnector instanceof utils_1.NoConnection)) { trm_commons_1.Logger.tree(serverTree); } }); }