trm-client
Version:
TRM (Transport Request Manager) Client
209 lines (208 loc) • 8.78 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.compare = compare;
const fs = __importStar(require("fs"));
const systemAlias_1 = require("../systemAlias");
const prompts_1 = require("./prompts");
const commons_1 = require("./commons");
const trm_core_1 = require("trm-core");
const utils_1 = require("../utils");
const trm_commons_1 = require("trm-commons");
const _compareConnectionData = (a, b) => {
return false;
};
const _promptConnections = (aConnections) => __awaiter(void 0, void 0, void 0, function* () {
if (aConnections.length > 0) {
trm_commons_1.Logger.info(`Compare systems: ${aConnections.map(o => o.getDest()).join(', ')}`);
}
var askConnection = true;
const inq1 = yield trm_commons_1.Inquirer.prompt([{
message: "Add another connection?",
name: "continue",
type: "confirm",
default: true,
when: aConnections.length > 0
}]);
askConnection = inq1.continue !== undefined ? inq1.continue : askConnection;
if (askConnection) {
const connectArgs = yield (0, prompts_1.connect)({}, false);
var oConnection;
if (connectArgs.type === utils_1.SystemConnectorType.RFC) {
oConnection = (0, utils_1.getSystemConnector)(connectArgs.type, {
connection: {
ashost: connectArgs.ashost,
dest: connectArgs.dest,
sysnr: connectArgs.sysnr,
saprouter: connectArgs.saprouter
},
login: {
user: connectArgs.user,
passwd: connectArgs.passwd,
lang: connectArgs.lang,
client: connectArgs.client
}
});
}
else if (connectArgs.type === utils_1.SystemConnectorType.REST) {
oConnection = (0, utils_1.getSystemConnector)(connectArgs.type, {
connection: {
endpoint: connectArgs.endpoint,
rfcdest: connectArgs.forwardRfcDest
},
login: {
user: connectArgs.user,
passwd: connectArgs.passwd,
lang: connectArgs.lang,
client: connectArgs.client
}
});
}
if (oConnection) {
if (!aConnections.find(o => _compareConnectionData(o.getConnectionData(), oConnection.getConnectionData()))) {
yield oConnection.connect();
aConnections.push(oConnection);
}
}
}
return {
continue: askConnection,
connections: aConnections
};
});
function compare(commandArgs) {
return __awaiter(this, void 0, void 0, function* () {
const packageName = commandArgs.package;
const registry = commons_1.CommandContext.getRegistry();
var inputConnections = commandArgs.connections;
var aConnections = [];
if (inputConnections) {
inputConnections = inputConnections.trim();
var sInputConnections;
var aInputConnections;
if (inputConnections[0] === '[') {
sInputConnections = inputConnections;
}
else {
aInputConnections = fs.readFileSync(inputConnections);
}
try {
aInputConnections = JSON.parse(sInputConnections);
}
catch (e) {
throw new Error('Input connections: invalid JSON format.');
}
for (const sAlias of aInputConnections) {
const oAlias = systemAlias_1.SystemAlias.get(sAlias);
const oConnection = oAlias.getConnection();
if (!aConnections.find(o => _compareConnectionData(o.getConnectionData(), oConnection.getConnectionData()))) {
yield oConnection.connect();
aConnections.push(oConnection);
}
}
}
if (aConnections.length === 0) {
var keepPrompt = true;
while (keepPrompt) {
const oPromptRes = yield _promptConnections(aConnections);
keepPrompt = oPromptRes.continue;
aConnections = oPromptRes.connections;
}
}
trm_commons_1.Logger.info(`Compare systems: ${aConnections.map(o => o.getDest()).join(', ')}`);
const tableHead = [`System`, `Installed`, `Version`, `Devclass`, `Import transport`];
var tableData = [];
trm_commons_1.Logger.loading(`Reading registry data...`);
var oRegistryView;
try {
oRegistryView = yield (0, commons_1.viewRegistryPackage)(packageName, true);
}
catch (e) { }
trm_commons_1.Logger.loading(`Reading system data...`);
for (const oConnection of aConnections) {
trm_core_1.SystemConnector.systemConnector = oConnection;
const system = trm_core_1.SystemConnector.getDest() || '';
var installed;
var version;
var devclass;
var importTransport;
const aSystemPackages = yield trm_core_1.SystemConnector.getInstalledPackages(true);
const oSystemView = aSystemPackages.find(o => o.compareName(packageName) && o.compareRegistry(registry));
if (oSystemView && oSystemView.manifest) {
installed = 'Yes';
version = oSystemView.manifest.get().version || 'Unknown';
devclass = oSystemView.getDevclass() || 'Unknown';
if (oSystemView.manifest.getLinkedTransport()) {
importTransport = oSystemView.manifest.getLinkedTransport().trkorr;
}
else {
importTransport = 'Unknown';
}
}
else {
installed = 'No';
version = '';
devclass = '';
importTransport = '';
}
tableData.push([
system,
installed,
version,
devclass,
importTransport
]);
}
trm_commons_1.Logger.info(`Package name: ${packageName}`);
trm_commons_1.Logger.info(`Registry: ${registry.name}`);
try {
trm_commons_1.Logger.info(`Latest version: ${oRegistryView.release.version}`);
}
catch (e) {
trm_commons_1.Logger.warning(`Latest version: Unknown`);
}
trm_commons_1.Logger.log(`\n`);
trm_commons_1.Logger.table(tableHead, tableData);
});
}