trm-core
Version:
TRM (Transport Request Manager) Core
406 lines (405 loc) • 21.7 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.setManifestValues = void 0;
const trm_commons_1 = require("trm-commons");
const registry_1 = require("../../registry");
const manifest_1 = require("../../manifest");
const FileSystem_1 = require("../../registry/FileSystem");
const lodash_1 = __importDefault(require("lodash"));
exports.setManifestValues = {
name: 'set-manifest-values',
run: (context) => __awaiter(void 0, void 0, void 0, function* () {
trm_commons_1.Logger.log('Set manifest values step', true);
if (context.rawInput.publishData.keepLatestReleaseManifestValues) {
if (context.runtime.trmPackage.latestReleaseManifest) {
trm_commons_1.Logger.log(`Setting manifest values like latest version (${context.runtime.trmPackage.latestReleaseManifest.version})`, true);
context.runtime.trmPackage.manifest.description = context.runtime.trmPackage.manifest.description || context.runtime.trmPackage.latestReleaseManifest.description;
context.runtime.trmPackage.manifest.git = context.runtime.trmPackage.manifest.git || context.runtime.trmPackage.latestReleaseManifest.git;
context.runtime.trmPackage.manifest.license = context.runtime.trmPackage.manifest.license || context.runtime.trmPackage.latestReleaseManifest.license;
context.runtime.trmPackage.manifest.website = context.runtime.trmPackage.manifest.website || context.runtime.trmPackage.latestReleaseManifest.website;
if (context.runtime.trmPackage.manifest.authors) {
if (Array.isArray(context.runtime.trmPackage.latestReleaseManifest.authors)) {
if (!Array.isArray(context.runtime.trmPackage.manifest.authors)) {
context.runtime.trmPackage.manifest.authors = manifest_1.Manifest.stringAuthorsToArray(context.runtime.trmPackage.manifest.authors);
}
context.runtime.trmPackage.latestReleaseManifest.authors.forEach(o => {
if (o.email && o.name) {
if (!context.runtime.trmPackage.manifest.authors.find(k => k.email === o.email && k.name === o.name)) {
context.runtime.trmPackage.manifest.authors.push(o);
}
}
else if (o.email) {
if (!context.runtime.trmPackage.manifest.authors.find(k => k.email === o.email)) {
context.runtime.trmPackage.manifest.authors.push(o);
}
}
else if (o.name) {
if (!context.runtime.trmPackage.manifest.authors.find(k => k.name === o.name)) {
context.runtime.trmPackage.manifest.authors.push(o);
}
}
});
}
}
else {
context.runtime.trmPackage.manifest.authors = context.runtime.trmPackage.latestReleaseManifest.authors;
}
if (context.runtime.trmPackage.manifest.keywords) {
if (Array.isArray(context.runtime.trmPackage.latestReleaseManifest.keywords)) {
if (!Array.isArray(context.runtime.trmPackage.manifest.keywords)) {
context.runtime.trmPackage.manifest.keywords = manifest_1.Manifest.stringKeywordsToArray(context.runtime.trmPackage.manifest.keywords);
}
context.runtime.trmPackage.latestReleaseManifest.keywords.forEach(o => {
if (!context.runtime.trmPackage.manifest.keywords.find(k => k === o)) {
context.runtime.trmPackage.manifest.keywords.push(o);
}
});
}
}
else {
context.runtime.trmPackage.manifest.keywords = context.runtime.trmPackage.latestReleaseManifest.keywords;
}
if (context.runtime.trmPackage.manifest.postActivities) {
if (Array.isArray(context.runtime.trmPackage.latestReleaseManifest.postActivities)) {
context.runtime.trmPackage.latestReleaseManifest.postActivities.forEach(o => {
if (!context.runtime.trmPackage.manifest.postActivities.find(k => lodash_1.default.isEqual(k, o))) {
context.runtime.trmPackage.manifest.postActivities.push(o);
}
});
}
}
else {
context.runtime.trmPackage.manifest.postActivities = context.runtime.trmPackage.latestReleaseManifest.postActivities;
}
if (context.rawInput.publishData.noDependenciesDetection) {
var missingDependencies = [];
(context.runtime.trmPackage.latestReleaseManifest.dependencies || []).forEach(o => {
if (!(context.runtime.trmPackage.manifest.dependencies || []).find(k => {
return k.name === o.name && k.registry === o.registry;
})) {
missingDependencies.push(o);
}
});
if (missingDependencies.length > 0) {
trm_commons_1.Logger.warning(`Latest version of the package had the ${missingDependencies.length} dependencies that are now missing`);
if (!context.rawInput.contextData.noInquirer) {
const inq = yield trm_commons_1.Inquirer.prompt({
type: 'select',
message: `Include dependencies (if still relevant)`,
name: 'dependencies',
choices: missingDependencies.map(o => {
var name;
if (o.registry) {
name = `${o.name} (${o.registry})`;
}
else {
name = o.name;
}
return {
name,
value: o
};
})
});
context.runtime.trmPackage.manifest.dependencies = (context.runtime.trmPackage.manifest.dependencies || []).concat((inq.dependencies || []));
}
else {
missingDependencies.forEach(o => {
if (o.registry) {
trm_commons_1.Logger.warning(` ${o.name} (${o.registry})`);
}
else {
trm_commons_1.Logger.warning(` ${o.name}`);
}
});
trm_commons_1.Logger.warning(`Include them manually later if still relveant.`);
}
}
}
}
}
if (!context.rawInput.contextData.noInquirer) {
var defaultAuthors;
var defaultKeywords;
if (Array.isArray(context.runtime.trmPackage.manifest.authors)) {
defaultAuthors = context.runtime.trmPackage.manifest.authors.map(o => {
var author;
if (o.name) {
author = o.name;
if (o.email) {
author += ` <${o.email}>`;
}
}
else if (o.email) {
author = o.email;
}
return author;
}).filter(o => o !== undefined).join(', ');
}
else {
defaultAuthors = context.runtime.trmPackage.manifest.authors;
}
if (Array.isArray(context.runtime.trmPackage.manifest.keywords)) {
defaultKeywords = context.runtime.trmPackage.manifest.keywords.join(', ');
}
else {
defaultKeywords = context.runtime.trmPackage.manifest.keywords;
}
var inq = yield trm_commons_1.Inquirer.prompt([{
type: "input",
message: "Short description",
name: "description",
default: context.runtime.trmPackage.manifest.description,
validate: (input) => {
if (context.rawInput.packageData.registry.getRegistryType() === registry_1.RegistryType.PUBLIC) {
if (input.length > 50) {
return "Maximum length: 50 characters";
}
else {
return true;
}
}
else {
return true;
}
}
}, {
type: "input",
message: "Website",
name: "website",
default: context.runtime.trmPackage.manifest.website,
validate: (input) => {
if (context.rawInput.packageData.registry.getRegistryType() === registry_1.RegistryType.PUBLIC) {
if (input.length > 100) {
return "Maximum length: 100 characters";
}
else {
return true;
}
}
else {
return true;
}
}
}, {
type: "input",
message: "Git repository",
name: "git",
default: context.runtime.trmPackage.manifest.git,
validate: (input) => {
if (context.rawInput.packageData.registry.getRegistryType() === registry_1.RegistryType.PUBLIC) {
if (input.length > 100) {
return "Maximum length: 100 characters";
}
else {
return true;
}
}
else {
return true;
}
}
}, {
type: "input",
message: "Authors (separated by comma)",
name: "authors",
default: defaultAuthors
}, {
type: "input",
message: "Keywords (separated by comma)",
name: "keywords",
default: defaultKeywords
}, {
type: "input",
message: "License",
name: "license",
default: context.runtime.trmPackage.manifest.license
}]);
context.runtime.trmPackage.manifest = Object.assign(Object.assign({}, context.runtime.trmPackage.manifest), inq);
}
if (context.runtime.packageData.namespace) {
context.runtime.trmPackage.manifest.namespace = {
ns: context.runtime.packageData.namespace.trnspacet.namespace,
replicense: context.runtime.packageData.namespace.trnspacet.replicense,
texts: context.runtime.packageData.namespace.trnspacett.map(o => {
return {
description: o.descriptn,
language: o.spras,
owner: o.owner
};
})
};
}
if (context.rawInput.packageData.registry.getRegistryType() === registry_1.RegistryType.LOCAL) {
context.runtime.trmPackage.manifest.registry = FileSystem_1.LOCAL_RESERVED_KEYWORD;
}
else if (context.rawInput.packageData.registry.getRegistryType() === registry_1.RegistryType.PRIVATE) {
context.runtime.trmPackage.manifest.registry = context.rawInput.packageData.registry.endpoint;
}
if (!context.rawInput.contextData.noInquirer) {
const inqDefault1 = context.runtime.trmPackage.manifest.postActivities || [];
const inq = yield trm_commons_1.Inquirer.prompt([{
message: inqDefault1.length > 0 ? `Do you want to edit ${inqDefault1.length} post activities?` : `Do you want to add post activities?`,
type: 'confirm',
name: 'editPostActivities',
default: false
}, {
message: 'Editor post activities',
type: 'editor',
name: 'postActivities',
postfix: '.json',
when: (hash) => {
return hash.editPostActivities;
},
default: JSON.stringify(inqDefault1.length === 0 ? [{
name: '<<class name>>',
parameters: [{
name: '<<parameter1>>',
value: '<<value1>>'
}, {
name: '<<parameter2>>',
value: '<<value2>>'
}]
}] : inqDefault1, null, 2),
validate: (input) => {
try {
const parsedInput = JSON.parse(input);
if (Array.isArray(parsedInput)) {
return true;
}
else {
return 'Invalid array';
}
}
catch (e) {
return 'Invalid JSON';
}
}
}]);
if (inq.postActivities) {
trm_commons_1.Logger.log(`Post activities were manually changed: before -> ${JSON.stringify(context.runtime.trmPackage.manifest.postActivities)}, after -> ${JSON.parse(inq.postActivities)}`, true);
context.runtime.trmPackage.manifest.postActivities = JSON.parse(inq.postActivities);
}
}
if (Array.isArray(context.runtime.trmPackage.manifest.postActivities) && context.runtime.trmPackage.manifest.postActivities.length > 0) {
var removedPostActivities = [];
trm_commons_1.Logger.loading(`Checking post activities...`);
for (var data of context.runtime.trmPackage.manifest.postActivities) {
if (data.name) {
data.name = data.name.trim().toUpperCase();
if (!removedPostActivities.find(c => c === data.name)) {
if (!(yield manifest_1.PostActivity.exists(data.name))) {
removedPostActivities.push(data.name);
}
}
}
if (Array.isArray(data.parameters)) {
data.parameters.forEach(p => {
if (p.name) {
p.name = p.name.trim().toUpperCase();
}
});
}
}
removedPostActivities.forEach(name => {
trm_commons_1.Logger.error(`Class "${name}" does not exist and will be removed from post activities list.`);
context.runtime.trmPackage.manifest.postActivities = context.runtime.trmPackage.manifest.postActivities.filter(o => o.name !== name);
});
}
if (!context.rawInput.contextData.noInquirer) {
const inqDefault2 = context.runtime.trmPackage.manifest.dependencies || [];
const inq = yield trm_commons_1.Inquirer.prompt([{
message: `Do you want to manually edit dependencies?`,
type: 'confirm',
name: 'editDependencies',
default: false
}, {
message: 'Editor dependencies',
type: 'editor',
name: 'dependencies',
postfix: '.json',
when: (hash) => {
return hash.editDependencies;
},
default: JSON.stringify(inqDefault2.length === 0 ? [{
name: '<<name>>',
version: '<<version>>',
registry: '<<registry?>>'
}] : inqDefault2, null, 2),
validate: (input) => {
try {
const parsedInput = JSON.parse(input);
if (Array.isArray(parsedInput)) {
return true;
}
else {
return 'Invalid array';
}
}
catch (e) {
return 'Invalid JSON';
}
}
}]);
if (inq.dependencies) {
trm_commons_1.Logger.log(`Dependencies were manually changed: before -> ${JSON.stringify(context.runtime.trmPackage.manifest.dependencies)}, after -> ${JSON.parse(inq.dependencies)}`, true);
context.runtime.trmPackage.manifest.dependencies = JSON.parse(inq.dependencies);
}
}
if (!context.rawInput.contextData.noInquirer) {
const inqDefault3 = context.runtime.trmPackage.manifest.sapEntries || {};
const inq = yield trm_commons_1.Inquirer.prompt([{
message: `Do you want to manually required SAP objects?`,
type: 'confirm',
name: 'editSapEntries',
default: false
}, {
message: 'Edit SAP entries',
type: 'editor',
name: 'sapEntries',
postfix: '.json',
when: (hash) => {
return hash.editSapEntries;
},
default: JSON.stringify(Object.keys(inqDefault3).length === 0 ? {
'<<table>>': [{
'<<field1>>': '<<value1>>',
'<<field2>>': '<<value2>>'
}]
} : inqDefault3, null, 2),
validate: (input) => {
try {
const parsedInput = JSON.parse(input);
if (typeof (parsedInput) === 'object' && !Array.isArray(parsedInput)) {
return true;
}
else {
return 'Invalid object';
}
}
catch (e) {
return 'Invalid JSON';
}
}
}]);
if (inq.sapEntries) {
trm_commons_1.Logger.log(`SAP entries were manually changed: before -> ${JSON.stringify(context.runtime.trmPackage.manifest.sapEntries)}, after -> ${JSON.parse(inq.sapEntries)}`, true);
context.runtime.trmPackage.manifest.sapEntries = JSON.parse(inq.sapEntries);
}
}
context.runtime.trmPackage.manifest = manifest_1.Manifest.normalize(context.runtime.trmPackage.manifest, false);
context.runtime.trmPackage.manifestXml = new manifest_1.Manifest(context.runtime.trmPackage.manifest).getAbapXml();
})
};