trm-core
Version:
TRM (Transport Request Manager) Core
141 lines (140 loc) • 6.2 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 logger_1 = require("../../logger");
const trmPackage_1 = require("../../trmPackage");
const commons_1 = require("../../commons");
const crypto_1 = require("crypto");
const systemConnector_1 = require("../../systemConnector");
exports.init = {
name: 'init',
run: (context) => __awaiter(void 0, void 0, void 0, function* () {
logger_1.Logger.log('Init step', true);
const registry = context.rawInput.packageData.registry;
context.rawInput.packageData.name = (0, commons_1.parsePackageName)({
fullName: context.rawInput.packageData.name
}).fullName;
if (!context.rawInput.packageData.version || context.rawInput.packageData.version.trim().toLowerCase() === 'latest') {
context.rawInput.packageData.version = 'latest';
}
logger_1.Logger.loading(`Searching TRM package in registry ${registry.name}...`);
const trmPackage = new trmPackage_1.TrmPackage(context.rawInput.packageData.name, registry);
const artifact = yield trmPackage.fetchRemoteArtifact(context.rawInput.packageData.version);
const integrity = (0, crypto_1.createHash)("sha512").update(artifact.binary).digest("hex");
const manifest = yield trmPackage.fetchRemoteManifest(context.rawInput.packageData.version);
const trmManifest = manifest.get();
var sVersion = trmManifest.version;
if (context.rawInput.packageData.version === 'latest') {
sVersion = `latest -> ${trmManifest.version}`;
}
logger_1.Logger.info(`Ready to install "${trmManifest.name}" version ${sVersion} from registry "${registry.name}".`);
context.runtime = {
registry,
update: undefined,
rollback: false,
remotePackageData: {
version: context.rawInput.packageData.version,
trmPackage,
trmManifest,
manifest,
artifact,
integrity
},
dependenciesToInstall: [],
r3trans: undefined,
packageTransports: {
devc: {
binaries: undefined,
instance: undefined
},
tadir: {
binaries: undefined,
instance: undefined
},
cust: {
binaries: undefined,
instance: undefined
},
lang: {
binaries: undefined,
instance: undefined
}
},
packageTransportsData: {
tdevc: [],
tdevct: [],
tadir: [],
e071: []
},
installData: {
transport: undefined,
namespace: undefined,
entries: []
},
originalData: {
hierarchy: undefined
},
generatedData: {
devclass: [],
namespace: undefined
}
};
if (context.rawInput.packageData.overwrite === undefined) {
context.rawInput.packageData.overwrite = false;
}
if (!context.rawInput.contextData) {
context.rawInput.contextData = {};
}
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
};
}
logger_1.Logger.loading(`Checking transport layer...`);
if (!context.rawInput.installData.installDevclass.transportLayer) {
try {
context.rawInput.installData.installDevclass.transportLayer = yield systemConnector_1.SystemConnector.getDefaultTransportLayer();
logger_1.Logger.log(`Setting transport layer to default: ${context.rawInput.installData.installDevclass.transportLayer}`, true);
}
catch (e) {
logger_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.`);
}
}
}),
revert: (context) => __awaiter(void 0, void 0, void 0, function* () {
logger_1.Logger.log('Rollback init step', true);
if (context.runtime && context.runtime.rollback) {
logger_1.Logger.success(`Rollback executed.`);
}
})
};