UNPKG

trm-core

Version:

TRM (Transport Request Manager) Core

406 lines (405 loc) 21.7 kB
"use strict"; 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(); }) };