trm-core
Version:
TRM (Transport Request Manager) Core
132 lines (131 loc) • 6.5 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());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.analyze = void 0;
const logger_1 = require("../../logger");
const trmPackage_1 = require("../../trmPackage");
const registry_1 = require("../../registry");
const semver_1 = require("semver");
const systemConnector_1 = require("../../systemConnector");
exports.analyze = {
name: 'analyze',
filter: (context) => __awaiter(void 0, void 0, void 0, function* () {
if (context.output.dependencies.length > 0) {
return true;
}
else {
logger_1.Logger.info(`Package ${context.rawInput.packageData.package.packageName} has no TRM package dependencies`, !context.rawInput.printOptions.information);
return false;
}
}),
run: (context) => __awaiter(void 0, void 0, void 0, function* () {
logger_1.Logger.log('Analyze step', true);
logger_1.Logger.info(`Package ${context.rawInput.packageData.package.packageName} has ${context.output.dependencies.length} TRM package dependencies`, !context.rawInput.printOptions.information);
var table = {
header: ['Dependency', 'Registry', 'Dependency range', 'Version on system', 'Version status', 'Integrity status'],
data: []
};
var tableData;
for (const dependency of context.output.dependencies) {
tableData = [dependency.name, dependency.registry || registry_1.PUBLIC_RESERVED_KEYWORD, dependency.version];
const dependencyTrmPackage = new trmPackage_1.TrmPackage(dependency.name, new registry_1.Registry(dependency.registry || registry_1.PUBLIC_RESERVED_KEYWORD));
const systemInstalledPackage = context.rawInput.contextData.systemPackages.find(o => trmPackage_1.TrmPackage.compare(o, dependencyTrmPackage));
if (systemInstalledPackage && systemInstalledPackage.manifest) {
const installedVersion = systemInstalledPackage.manifest.get().version;
tableData.push(installedVersion);
if ((0, semver_1.satisfies)(installedVersion, dependency.version)) {
tableData.push('OK');
context.runtime.dependenciesStatus.goodVersion.push(dependency);
}
else {
tableData.push('ERR!');
context.runtime.dependenciesStatus.badVersion.push(dependency);
}
}
else {
tableData.push('Not found');
tableData.push('ERR!');
context.runtime.dependenciesStatus.badVersion.push(dependency);
}
try {
const installedPackageIntegrity = yield systemConnector_1.SystemConnector.getPackageIntegrity(systemInstalledPackage);
if (installedPackageIntegrity === dependency.integrity) {
tableData.push('Safe');
context.runtime.dependenciesStatus.goodIntegrity.push(dependency);
}
else {
tableData.push('Unsafe');
context.runtime.dependenciesStatus.badIntegrity.push(dependency);
}
}
catch (e) {
tableData.push('Unknown');
context.runtime.dependenciesStatus.badIntegrity.push(dependency);
logger_1.Logger.error(e.toString(), true);
logger_1.Logger.error(`Couldn't retrieve package integrity`, true);
}
table.data.push(tableData);
}
logger_1.Logger.table(table.header, table.data, !context.rawInput.printOptions.dependencyStatus);
context.runtime.dependenciesStatus.goodVersion.forEach(o => {
const i = context.output.dependencyStatus.findIndex(k => k.dependency.name === o.name && k.dependency.registry === o.registry);
if (i >= 0) {
context.output.dependencyStatus[i].match = true;
}
else {
context.output.dependencyStatus.push({
dependency: o,
match: true,
safe: null
});
}
});
context.runtime.dependenciesStatus.badVersion.forEach(o => {
const i = context.output.dependencyStatus.findIndex(k => k.dependency.name === o.name && k.dependency.registry === o.registry);
if (i >= 0) {
context.output.dependencyStatus[i].match = false;
}
else {
context.output.dependencyStatus.push({
dependency: o,
match: false,
safe: null
});
}
});
context.runtime.dependenciesStatus.goodIntegrity.forEach(o => {
const i = context.output.dependencyStatus.findIndex(k => k.dependency.name === o.name && k.dependency.registry === o.registry);
if (i >= 0) {
context.output.dependencyStatus[i].safe = true;
}
else {
context.output.dependencyStatus.push({
dependency: o,
match: null,
safe: true
});
}
});
context.runtime.dependenciesStatus.badIntegrity.forEach(o => {
const i = context.output.dependencyStatus.findIndex(k => k.dependency.name === o.name && k.dependency.registry === o.registry);
if (i >= 0) {
context.output.dependencyStatus[i].safe = false;
}
else {
context.output.dependencyStatus.push({
dependency: o,
match: null,
safe: false
});
}
});
})
};