trm-core
Version:
TRM (Transport Request Manager) Core
168 lines (167 loc) • 8.05 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.init = void 0;
const trm_commons_1 = require("trm-commons");
const crypto_1 = require("crypto");
const systemConnector_1 = require("../../systemConnector");
const registry_1 = require("../../registry");
const semver_1 = require("semver");
exports.init = {
name: 'init',
run: (context) => __awaiter(void 0, void 0, void 0, function* () {
trm_commons_1.Logger.log('Init step', true);
const registry = context.rawInput.packageData.registry;
var artifact;
var manifest;
var packageData;
var actualRegistry;
if (registry.getRegistryType() === registry_1.RegistryType.LOCAL) {
try {
artifact = yield registry.downloadArtifact('dummy', 'dummy');
}
catch (_a) {
throw new Error(`Unable to read local package.`);
}
const oManifest = artifact.getManifest();
manifest = oManifest.get();
packageData.manifest = manifest;
actualRegistry = oManifest.getPackage().registry;
context.rawInput.packageData.name = manifest.name;
}
if (registry.getRegistryType() !== registry_1.RegistryType.LOCAL) {
trm_commons_1.Logger.loading(`Fetching package in registry ${registry.name}...`);
packageData = yield registry.getPackage(context.rawInput.packageData.name, context.rawInput.packageData.version || 'latest');
artifact = yield registry.downloadArtifact(packageData.name, packageData.manifest.version);
const checksum = (0, crypto_1.createHash)("sha512").update(artifact.binary).digest("base64");
if (checksum !== packageData.checksum) {
var ping;
try {
ping = yield registry.ping();
}
catch (_b) { }
trm_commons_1.Logger.error(`SECURITY ISSUE! Release integrity does NOT match!`);
trm_commons_1.Logger.error(`SECURITY ISSUE! Expected SHA is ${packageData.checksum}, current SHA is ${checksum}`);
trm_commons_1.Logger.error(`SECURITY ISSUE! Please, report the issue to ${ping && ping.alert_email ? ping.alert_email : 'registry moderation team'}`);
throw new Error(`Cannot continue due to security issues.`);
}
manifest = artifact.getManifest().get();
}
trm_commons_1.Logger.info(`Ready to install ${manifest.name} v${manifest.version}${!(0, semver_1.valid)(context.rawInput.packageData.version) ? (' (' + (context.rawInput.packageData.version || 'latest') + ')') : ''}.`);
if (!context.rawInput.contextData) {
context.rawInput.contextData = {};
}
context.runtime = {
stopWarningShown: context.rawInput.contextData.noStopWarning ? true : false,
isTrmServerRest: false,
registry: actualRegistry || registry,
update: undefined,
remotePackageData: {
data: packageData,
artifact,
manifest,
contents: false
},
dependenciesToInstall: [],
r3trans: undefined,
packageTransports: {
devc: {
binaries: undefined,
instance: undefined
},
tadir: {
binaries: undefined,
instance: undefined
},
cust: [],
lang: {
binaries: undefined,
instance: undefined
}
},
packageTransportsData: {
tdevc: [],
tdevct: [],
tadir: [],
e071: []
},
installData: {
namespace: undefined,
entries: [],
transports: []
},
originalData: {
hierarchy: undefined
},
generatedData: {
devclass: [],
namespace: undefined,
tmsTxtRefresh: []
}
};
context.runtime.isTrmServerRest = (context.runtime.remotePackageData.data.name === systemConnector_1.TRM_SERVER_PACKAGE_NAME || context.runtime.remotePackageData.data.name === systemConnector_1.TRM_REST_PACKAGE_NAME) && context.runtime.registry.getRegistryType() === registry_1.RegistryType.PUBLIC;
if (context.rawInput.packageData.overwrite === undefined) {
context.rawInput.packageData.overwrite = false;
}
if (!context.rawInput.installData) {
context.rawInput.installData = {};
}
if (!context.rawInput.installData.checks) {
context.rawInput.installData.checks = {};
}
if (!context.rawInput.installData.import) {
context.rawInput.installData.import = {};
}
if (!context.rawInput.installData.installDevclass) {
context.rawInput.installData.installDevclass = {};
}
if (!context.rawInput.installData.installDevclass.replacements) {
context.rawInput.installData.installDevclass.replacements = [];
}
if (!context.rawInput.installData.installTransport) {
context.rawInput.installData.installTransport = {
create: true
};
}
if (!context.rawInput.installData.skipPostActivities) {
context.rawInput.installData.skipPostActivities = false;
}
if (context.runtime.isTrmServerRest) {
context.rawInput.installData.installDevclass.keepOriginal = false;
}
if (context.rawInput.installData.installDevclass.keepOriginal === undefined) {
if (!context.rawInput.contextData.noInquirer) {
context.rawInput.installData.installDevclass.keepOriginal = (yield trm_commons_1.Inquirer.prompt([{
name: 'keepOriginal',
message: `Keep original ABAP package(s)?`,
type: 'confirm',
default: context.rawInput.installData.installDevclass.keepOriginal ? true : false
}])).keepOriginal;
}
}
trm_commons_1.Logger.loading(`Checking transport layer...`);
if (!context.rawInput.installData.installDevclass.transportLayer) {
try {
context.rawInput.installData.installDevclass.transportLayer = yield systemConnector_1.SystemConnector.getDefaultTransportLayer();
trm_commons_1.Logger.log(`Setting transport layer to default: ${context.rawInput.installData.installDevclass.transportLayer}`, true);
}
catch (e) {
trm_commons_1.Logger.error(e.toString(), true);
throw new Error(`Couldn't determine system's default transport layer.`);
}
}
else {
if (!(yield systemConnector_1.SystemConnector.isTransportLayerExist(context.rawInput.installData.installDevclass.transportLayer))) {
throw new Error(`Transport layer "${context.rawInput.installData.installDevclass.transportLayer}" doesn't exist.`);
}
}
})
};