trm-client
Version:
TRM (Transport Request Manager) Client
200 lines (199 loc) • 8.87 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());
});
};
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);
}
});
}