trm-core 8.5.3 → 9.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (101) hide show
  1. package/README.md +11 -5
  2. package/changelog.txt +17 -0
  3. package/dist/actions/commons/prompts/index.d.ts +1 -0
  4. package/dist/actions/commons/prompts/index.js +17 -0
  5. package/dist/actions/commons/prompts/setTransportTarget.d.ts +2 -0
  6. package/dist/actions/commons/prompts/setTransportTarget.js +63 -0
  7. package/dist/actions/install/addNamespace.js +19 -46
  8. package/dist/actions/install/{migrate.d.ts → checkObjectsLock.d.ts} +1 -1
  9. package/dist/actions/install/checkObjectsLock.js +52 -0
  10. package/dist/actions/install/checkTransports.js +76 -55
  11. package/dist/actions/install/executePostActivities.js +13 -11
  12. package/dist/actions/install/generateDevclass.js +1 -7
  13. package/dist/actions/install/generateInstallTransport.js +85 -99
  14. package/dist/actions/install/importCustTransport.js +34 -33
  15. package/dist/actions/install/importDevcTransport.js +1 -1
  16. package/dist/actions/install/importLangTransport.js +1 -1
  17. package/dist/actions/install/importTadirTransport.js +2 -18
  18. package/dist/actions/install/index.d.ts +5 -5
  19. package/dist/actions/install/index.js +7 -9
  20. package/dist/actions/install/init.js +6 -9
  21. package/dist/actions/install/readDevc.js +6 -2
  22. package/dist/actions/install/readTadir.js +4 -2
  23. package/dist/actions/install/refreshTmsTxt.js +2 -8
  24. package/dist/actions/install/{setPackageIntegrity.d.ts → updatePackageData.d.ts} +1 -1
  25. package/dist/actions/install/updatePackageData.js +35 -0
  26. package/dist/actions/publish/checkAllObjectsReleased.d.ts +3 -0
  27. package/dist/actions/publish/checkAllObjectsReleased.js +46 -0
  28. package/dist/actions/publish/generateCustTransport.js +24 -20
  29. package/dist/actions/publish/generateDevcTransport.js +0 -2
  30. package/dist/actions/publish/generateTadirTransport.js +0 -16
  31. package/dist/actions/publish/getSourceCode.js +1 -1
  32. package/dist/actions/publish/index.d.ts +7 -3
  33. package/dist/actions/publish/index.js +5 -3
  34. package/dist/actions/publish/init.js +9 -22
  35. package/dist/actions/publish/releaseTransports.js +3 -4
  36. package/dist/actions/publish/setCustomizingTransports.js +100 -44
  37. package/dist/actions/publish/setManifestValues.js +1 -1
  38. package/dist/actions/publish/setReadme.js +1 -1
  39. package/dist/actions/publish/setTransportTarget.js +2 -36
  40. package/dist/actions/publish/{finalizePublish.d.ts → updatePackageData.d.ts} +1 -1
  41. package/dist/actions/publish/{finalizePublish.js → updatePackageData.js} +10 -10
  42. package/dist/actions/stopWarning.js +5 -1
  43. package/dist/client/RESTClient.d.ts +5 -6
  44. package/dist/client/RESTClient.js +36 -51
  45. package/dist/client/RFCClient.d.ts +5 -6
  46. package/dist/client/RFCClient.js +168 -205
  47. package/dist/client/components/DDLANGUAGE.d.ts +1 -0
  48. package/dist/client/components/TARSYSTEM.d.ts +1 -0
  49. package/dist/client/components/index.d.ts +2 -0
  50. package/dist/client/components/index.js +2 -0
  51. package/dist/client/struct/E07T.d.ts +6 -0
  52. package/dist/client/struct/E07T.js +2 -0
  53. package/dist/client/struct/TADIR_KEY.d.ts +6 -0
  54. package/dist/client/struct/TADIR_KEY.js +2 -0
  55. package/dist/client/struct/ZTRM_DIRTY.d.ts +7 -0
  56. package/dist/client/struct/ZTRM_DIRTY.js +2 -0
  57. package/dist/client/struct/ZTRM_OBJ_LOCK.d.ts +7 -0
  58. package/dist/client/struct/ZTRM_OBJ_LOCK.js +2 -0
  59. package/dist/client/struct/ZTRM_PACKAGE.d.ts +14 -0
  60. package/dist/client/struct/ZTRM_PACKAGE.js +2 -0
  61. package/dist/client/struct/index.d.ts +5 -2
  62. package/dist/client/struct/index.js +5 -2
  63. package/dist/commons/index.d.ts +0 -1
  64. package/dist/commons/index.js +0 -1
  65. package/dist/dependencies/PackageDependencies.js +16 -5
  66. package/dist/lockfile/Lockfile.js +1 -1
  67. package/dist/manifest/Manifest.js +0 -31
  68. package/dist/registry/AbstractRegistry.d.ts +2 -1
  69. package/dist/registry/FileSystem.d.ts +1 -0
  70. package/dist/registry/FileSystem.js +5 -0
  71. package/dist/registry/RegistryV2.d.ts +2 -1
  72. package/dist/registry/RegistryV2.js +116 -6
  73. package/dist/systemConnector/ISystemConnector.d.ts +4 -5
  74. package/dist/systemConnector/ISystemConnectorBase.d.ts +0 -3
  75. package/dist/systemConnector/RESTSystemConnector.d.ts +5 -6
  76. package/dist/systemConnector/RESTSystemConnector.js +20 -25
  77. package/dist/systemConnector/RFCSystemConnector.d.ts +5 -6
  78. package/dist/systemConnector/RFCSystemConnector.js +20 -25
  79. package/dist/systemConnector/SystemConnector.d.ts +5 -9
  80. package/dist/systemConnector/SystemConnector.js +21 -42
  81. package/dist/systemConnector/SystemConnectorBase.d.ts +7 -9
  82. package/dist/systemConnector/SystemConnectorBase.js +41 -220
  83. package/dist/transport/Transport.d.ts +9 -4
  84. package/dist/transport/Transport.js +49 -52
  85. package/dist/trmPackage/TrmArtifact.d.ts +1 -1
  86. package/dist/trmPackage/TrmArtifact.js +9 -2
  87. package/dist/trmPackage/TrmPackage.d.ts +11 -5
  88. package/dist/trmPackage/TrmPackage.js +11 -22
  89. package/dist/validators/validateTransportTarget.d.ts +2 -2
  90. package/dist/validators/validateTransportTarget.js +1 -1
  91. package/package.json +4 -4
  92. package/dist/actions/install/migrate.js +0 -35
  93. package/dist/actions/install/setPackageIntegrity.js +0 -28
  94. package/dist/actions/install/setTrmServerUpgradeService.d.ts +0 -3
  95. package/dist/actions/install/setTrmServerUpgradeService.js +0 -32
  96. package/dist/client/struct/ZTRM_INTEGRITY.d.ts +0 -6
  97. package/dist/client/struct/ZTY_TRM_PACKAGE.d.ts +0 -14
  98. package/dist/commons/TrmServerUpgradeService.d.ts +0 -16
  99. package/dist/commons/TrmServerUpgradeService.js +0 -89
  100. /package/dist/client/{struct/ZTRM_INTEGRITY.js → components/DDLANGUAGE.js} +0 -0
  101. /package/dist/client/{struct/ZTY_TRM_PACKAGE.js → components/TARSYSTEM.js} +0 -0
package/README.md CHANGED
@@ -4,26 +4,32 @@
4
4
  [![Core License](https://img.shields.io/github/license/RegestaItalia/trm-core)](https://github.com/RegestaItalia/trm-core)
5
5
  [![Core Latest version](https://img.shields.io/npm/v/trm-core)](https://www.npmjs.com/package/trm-core)
6
6
  [![Core Installs](https://img.shields.io/npm/dt/trm-core)](https://www.npmjs.com/package/trm-core)
7
+ [![View Code Wiki](https://assets.codewiki.google/readme-badge/static.svg)](https://codewiki.google/github.com/regestaitalia/trm-docs)
7
8
 
8
9
  | 🚀 This project is funded and maintained by 🏦 | 🔗 |
9
10
  |-------------------------------------------------|----------------------------------------------------------------|
10
11
  | Regesta S.p.A. | [https://www.regestaitalia.eu/](https://www.regestaitalia.eu/) |
11
12
  | Clarex S.r.l. | [https://www.clarex.it/](https://www.clarex.it/) |
12
13
 
13
- This module contains the core functionalities of [TRM (Transport Request Manager)](https://trmregistry.com/).
14
+ [trm-core](https://www.npmjs.com/package/trm-core) is the server-side component of TRM.
14
15
 
15
- TRM is a software designed to make transports between SAP ECC/S4 systems easy.
16
+ 🚚 **TRM (Transport Request Manager)** is a package manager inspired solution built leveraging CTS that simplifies SAP ABAP transports.
17
+
18
+ <p align="center">
19
+ <img src="https://docs.trmregistry.com/logo.png" alt="TRM Logo" />
20
+ </p>
21
+
22
+ TRM introduces **package-based software delivery** to the SAP ecosystem, bringing with it semantic versioning, dependency management, and automated deployment activities.
16
23
 
17
24
  # Requirements
18
25
 
19
26
  - [Node >=22.12.0](https://github.com/nodejs/node/releases/tag/v22.12.0)
20
27
 
21
- # Documentation <!-- {docsify-remove} -->
28
+ # Documentation
22
29
 
23
30
  Full documentation can be seen at [https://docs.trmregistry.com/](https://docs.trmregistry.com).
24
31
 
25
- # Contributing <!-- {docsify-remove} -->
26
-
32
+ # Contributing
27
33
  Like every other TRM open-source projects, contributions are always welcomed ❤️.
28
34
 
29
35
  Make sure to open an issue first.
package/changelog.txt CHANGED
@@ -8,6 +8,23 @@ Legend
8
8
  + : added
9
9
  - : removed
10
10
 
11
+ 2026-04-21 v9.1.0
12
+ -------------------
13
+ ! abstract registry log for downloads
14
+ ! abstract registry contents endpoint (wip)
15
+ ! skip usage of r3trans when registry provides content (wip)
16
+
17
+ 2026-04-14 v9.0.0
18
+ -------------------
19
+ ! moved to namespace /ATRM/
20
+ ! trm-commons ^3.7.1
21
+ * polling progress bar
22
+ * transport icon
23
+ ! release check before TADIR transport (in publish)
24
+ - sap entries in transport documentation
25
+ ! release on transport install
26
+ ! multiple customizing transports allowed
27
+
11
28
  2026-03-11 v8.5.3
12
29
  -------------------
13
30
  + refresh transport text in cg3z
@@ -0,0 +1 @@
1
+ export * from "./setTransportTarget";
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./setTransportTarget"), exports);
@@ -0,0 +1,2 @@
1
+ import { TARSYSTEM } from "../../../client";
2
+ export declare function setTransportTarget(noInquirer: boolean, systemTargets: TARSYSTEM[], userInput?: TARSYSTEM, inquirerMessage?: string): Promise<TARSYSTEM>;
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.setTransportTarget = setTransportTarget;
16
+ const trm_commons_1 = require("trm-commons");
17
+ const chalk_1 = __importDefault(require("chalk"));
18
+ const validators_1 = require("../../../validators");
19
+ function setTransportTarget(noInquirer, systemTargets, userInput, inquirerMessage) {
20
+ return __awaiter(this, void 0, void 0, function* () {
21
+ var needsValidation;
22
+ var transportTarget = userInput;
23
+ if (transportTarget === undefined) {
24
+ if (systemTargets.length === 1) {
25
+ transportTarget = systemTargets[0];
26
+ trm_commons_1.Logger.info(`Target system automatically set to ${chalk_1.default.bold(transportTarget)}`);
27
+ }
28
+ else {
29
+ if (!noInquirer) {
30
+ transportTarget = (yield trm_commons_1.Inquirer.prompt({
31
+ type: "list",
32
+ message: inquirerMessage || 'Transport target',
33
+ name: "transportTarget",
34
+ validate: (input) => __awaiter(this, void 0, void 0, function* () {
35
+ return yield (0, validators_1.validateTransportTarget)(input, systemTargets);
36
+ }),
37
+ choices: systemTargets.map(o => {
38
+ return {
39
+ name: o,
40
+ value: o
41
+ };
42
+ })
43
+ })).transportTarget;
44
+ }
45
+ else {
46
+ throw new Error(`Transport target was not declared.`);
47
+ }
48
+ }
49
+ needsValidation = false;
50
+ }
51
+ else {
52
+ needsValidation = true;
53
+ }
54
+ if (needsValidation) {
55
+ const validate = yield (0, validators_1.validateTransportTarget)(transportTarget, systemTargets);
56
+ if (validate && validate !== true) {
57
+ throw new Error(validate);
58
+ }
59
+ trm_commons_1.Logger.info(`Target system: ${chalk_1.default.bold(transportTarget)}`);
60
+ }
61
+ return transportTarget;
62
+ });
63
+ }
@@ -30,12 +30,6 @@ exports.addNamespace = {
30
30
  trm_commons_1.Logger.log(`Package install namespace is ${context.runtime.installData.namespace}`, true);
31
31
  return;
32
32
  }
33
- else {
34
- if (context.rawInput.installData.installDevclass.skipNamespace) {
35
- trm_commons_1.Logger.info(`Skipping install of namespace ${context.runtime.installData.namespace}`, false);
36
- return;
37
- }
38
- }
39
33
  trm_commons_1.Logger.loading(`Checking namespace ${context.runtime.installData.namespace}...`);
40
34
  var namespace;
41
35
  const namespaceCheck = yield systemConnector_1.SystemConnector.getNamespace(context.runtime.installData.namespace);
@@ -46,8 +40,13 @@ exports.addNamespace = {
46
40
  trm_commons_1.Logger.log(`Namespace ${context.runtime.installData.namespace} already defined`, true);
47
41
  return;
48
42
  }
43
+ else {
44
+ if (context.rawInput.installData.installDevclass.skipNamespace) {
45
+ throw new Error(`Cannot generate packages without namespace ${context.runtime.installData.namespace}. Run install with namespace import or do not rename install packages.`);
46
+ }
47
+ }
49
48
  var replicense;
50
- var texts;
49
+ var text;
51
50
  var aTexts = [];
52
51
  if (context.runtime.installData.namespace !== originalNamespace) {
53
52
  if (!context.rawInput.contextData.noInquirer) {
@@ -64,7 +63,7 @@ exports.addNamespace = {
64
63
  }
65
64
  }
66
65
  })).replicense;
67
- texts = yield trm_commons_1.Inquirer.prompt([{
66
+ text = yield trm_commons_1.Inquirer.prompt([{
68
67
  message: `dummy`,
69
68
  name: 'namespace',
70
69
  type: 'input',
@@ -77,61 +76,35 @@ exports.addNamespace = {
77
76
  }, {
78
77
  message: `Namespace language`,
79
78
  name: 'spras',
80
- type: 'input'
79
+ type: 'input',
80
+ default: systemConnector_1.SystemConnector.getLogonLanguage(true)
81
81
  }, {
82
82
  message: `Namespace description`,
83
83
  name: 'descriptn',
84
84
  type: 'input'
85
85
  }]);
86
+ aTexts.push(text);
86
87
  }
87
88
  }
88
89
  else {
89
90
  if (context.runtime.remotePackageData.manifest.namespace) {
90
91
  replicense = context.runtime.remotePackageData.manifest.namespace.replicense;
91
- if (context.runtime.remotePackageData.manifest.namespace.texts && context.runtime.remotePackageData.manifest.namespace.texts.length > 0) {
92
- if (context.runtime.remotePackageData.manifest.namespace.texts.length === 1 || context.rawInput.contextData.noInquirer) {
93
- texts = {
94
- namespace: context.runtime.installData.namespace,
95
- descriptn: context.runtime.remotePackageData.manifest.namespace.texts[0].description,
96
- owner: context.runtime.remotePackageData.manifest.namespace.texts[0].owner,
97
- spras: context.runtime.remotePackageData.manifest.namespace.texts[0].language
98
- };
99
- }
100
- else {
101
- if (!context.rawInput.contextData.noInquirer) {
102
- texts = (yield trm_commons_1.Inquirer.prompt({
103
- type: 'list',
104
- message: 'Choose namespace install text',
105
- name: 'choice',
106
- choices: context.runtime.remotePackageData.manifest.namespace.texts.map(o => {
107
- return {
108
- name: `${o.language} ${o.description} ${o.owner}`,
109
- value: {
110
- namespace: context.runtime.installData.namespace,
111
- descriptn: o.description,
112
- owner: o.owner,
113
- spras: o.language
114
- }
115
- };
116
- })
117
- })).choice;
118
- }
119
- }
120
- }
92
+ aTexts = context.runtime.remotePackageData.manifest.namespace.texts.map(o => {
93
+ return {
94
+ namespace: context.runtime.remotePackageData.manifest.namespace.ns || context.runtime.installData.namespace,
95
+ spras: o.language,
96
+ descriptn: o.description,
97
+ owner: o.owner
98
+ };
99
+ });
121
100
  }
122
101
  }
123
102
  if (!replicense) {
124
103
  throw new Error(`Cannot use namespace ${context.runtime.installData.namespace}: repair license missing.`);
125
104
  }
126
- if (!texts) {
105
+ if (aTexts.length === 0) {
127
106
  throw new Error(`Cannot use namespace ${context.runtime.installData.namespace}: data missing.`);
128
107
  }
129
- else {
130
- aTexts.push(texts);
131
- if (texts.spras != systemConnector_1.SystemConnector.getLogonLanguage(true)) {
132
- aTexts.push(Object.assign(Object.assign({}, texts), { spras: systemConnector_1.SystemConnector.getLogonLanguage(true) }));
133
- }
134
- }
135
108
  if (!context.runtime.stopWarningShown) {
136
109
  context.runtime.stopWarningShown = true;
137
110
  (0, stopWarning_1.stopWarning)('install');
@@ -1,3 +1,3 @@
1
1
  import { Step } from "@simonegaffurini/sammarksworkflow";
2
2
  import { InstallWorkflowContext } from ".";
3
- export declare const migrate: Step<InstallWorkflowContext>;
3
+ export declare const checkObjectsLock: Step<InstallWorkflowContext>;
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.checkObjectsLock = void 0;
13
+ const trm_commons_1 = require("trm-commons");
14
+ const systemConnector_1 = require("../../systemConnector");
15
+ exports.checkObjectsLock = {
16
+ name: 'check-objects-lock',
17
+ filter: (context) => __awaiter(void 0, void 0, void 0, function* () {
18
+ if (context.rawInput.installData.installTransport.create) {
19
+ return true;
20
+ }
21
+ else {
22
+ trm_commons_1.Logger.log(`Skipping objects lock (user input, no install transport)`, true);
23
+ return false;
24
+ }
25
+ }),
26
+ run: (context) => __awaiter(void 0, void 0, void 0, function* () {
27
+ trm_commons_1.Logger.log('Check objects lock step', true);
28
+ const devclass = context.runtime.generatedData.devclass.map(d => {
29
+ return {
30
+ PGMID: 'R3TR',
31
+ OBJECT: 'DEVC',
32
+ OBJ_NAME: d
33
+ };
34
+ });
35
+ const locks = yield systemConnector_1.SystemConnector.getObjectsLocks(devclass.concat(context.runtime.packageTransportsData.e071.map(o => {
36
+ return {
37
+ PGMID: o.pgmid,
38
+ OBJECT: o.object,
39
+ OBJ_NAME: o.objName
40
+ };
41
+ })));
42
+ if (locks.length > 0) {
43
+ locks.forEach(l => {
44
+ trm_commons_1.Logger.error(`${l.pgmid} ${l.object} ${l.objName} is currently locked in transport ${l.trkorr}`);
45
+ });
46
+ throw new Error(`To generate install transports, all objects must be released`);
47
+ }
48
+ else {
49
+ trm_commons_1.Logger.log(`All objects released, continue`, true);
50
+ }
51
+ })
52
+ };
@@ -20,8 +20,15 @@ exports.checkTransports = {
20
20
  run: (context) => __awaiter(void 0, void 0, void 0, function* () {
21
21
  trm_commons_1.Logger.log('Check transports step', true);
22
22
  var checkExistance = [];
23
+ try {
24
+ context.runtime.packageTransportsData = yield context.rawInput.packageData.registry.contents(context.rawInput.packageData.name, context.rawInput.packageData.version || 'latest', true);
25
+ context.runtime.remotePackageData.contents = true;
26
+ }
27
+ catch (_a) {
28
+ context.runtime.remotePackageData.contents = false;
29
+ }
23
30
  trm_commons_1.Logger.loading(`Checking package transports...`);
24
- const aTransports = yield context.runtime.remotePackageData.artifact.getTransportBinaries(context.rawInput.contextData.r3transOptions);
31
+ const aTransports = yield context.runtime.remotePackageData.artifact.getTransportBinaries(context.rawInput.contextData.r3transOptions, context.runtime.remotePackageData.contents);
25
32
  trm_commons_1.Logger.log(`Package content: ${aTransports.map(o => {
26
33
  return {
27
34
  trkorr: o.trkorr,
@@ -61,9 +68,11 @@ exports.checkTransports = {
61
68
  context.runtime.packageTransports.tadir.binaries = aTadirTransports[0];
62
69
  trm_commons_1.Logger.log(`TADIR transport is ${context.runtime.packageTransports.tadir.binaries.trkorr}.`, true);
63
70
  checkExistance.push(context.runtime.packageTransports.tadir.binaries.trkorr);
64
- const tadirE071 = (0, commons_1.normalize)(yield context.runtime.r3trans.getTableEntries(context.runtime.packageTransports.tadir.binaries.binaries.data, 'E071'));
65
- trm_commons_1.Logger.log(`TADIR E071: ${JSON.stringify(tadirE071)}`, true);
66
- context.runtime.packageTransportsData.e071 = context.runtime.packageTransportsData.e071.concat(tadirE071);
71
+ if (!context.runtime.remotePackageData.contents) {
72
+ const tadirE071 = (0, commons_1.normalize)(yield context.runtime.r3trans.getTableEntries(context.runtime.packageTransports.tadir.binaries.binaries.data, 'E071'));
73
+ trm_commons_1.Logger.log(`TADIR E071: ${JSON.stringify(tadirE071)}`, true);
74
+ context.runtime.packageTransportsData.e071 = context.runtime.packageTransportsData.e071.concat(tadirE071);
75
+ }
67
76
  }
68
77
  if (aLangTransports.length > 0) {
69
78
  if (context.rawInput.installData.import.noLang === undefined) {
@@ -83,12 +92,12 @@ exports.checkTransports = {
83
92
  }
84
93
  context.runtime.packageTransports.lang.binaries = aLangTransports[0];
85
94
  trm_commons_1.Logger.log(`LANG transport is ${context.runtime.packageTransports.lang.binaries.trkorr}.`, true);
86
- if (!context.rawInput.installData.import.noLang) {
87
- checkExistance.push(context.runtime.packageTransports.lang.binaries.trkorr);
95
+ checkExistance.push(context.runtime.packageTransports.lang.binaries.trkorr);
96
+ if (!context.runtime.remotePackageData.contents) {
97
+ const langE071 = (0, commons_1.normalize)(yield context.runtime.r3trans.getTableEntries(context.runtime.packageTransports.lang.binaries.binaries.data, 'E071'));
98
+ trm_commons_1.Logger.log(`LANG E071: ${JSON.stringify(langE071)}`, true);
99
+ context.runtime.packageTransportsData.e071 = context.runtime.packageTransportsData.e071.concat(langE071);
88
100
  }
89
- const langE071 = (0, commons_1.normalize)(yield context.runtime.r3trans.getTableEntries(context.runtime.packageTransports.lang.binaries.binaries.data, 'E071'));
90
- trm_commons_1.Logger.log(`LANG E071: ${JSON.stringify(langE071)}`, true);
91
- context.runtime.packageTransportsData.e071 = context.runtime.packageTransportsData.e071.concat(langE071);
92
101
  }
93
102
  }
94
103
  if (aCustTransports.length > 0) {
@@ -97,36 +106,43 @@ exports.checkTransports = {
97
106
  context.rawInput.installData.import.noCust = !(yield trm_commons_2.Inquirer.prompt({
98
107
  type: `confirm`,
99
108
  name: `noCust`,
100
- message: `Import customizing transport?`,
109
+ message: `Import ${aCustTransports.length} customizing transport(s)?`,
101
110
  default: true,
102
111
  })).noCust;
103
112
  }
104
113
  }
105
114
  if (!context.rawInput.installData.import.noCust) {
106
- if (aCustTransports.length !== 1) {
107
- trm_commons_1.Logger.error(`Multiple CUST transports found`, true);
108
- throw new Error(`Unexpected content in package.`);
109
- }
110
- context.runtime.packageTransports.cust.binaries = aCustTransports[0];
111
- trm_commons_1.Logger.log(`CUST transport is ${context.runtime.packageTransports.cust.binaries.trkorr}.`, true);
112
- if (!context.rawInput.installData.import.noCust) {
113
- checkExistance.push(context.runtime.packageTransports.cust.binaries.trkorr);
115
+ context.runtime.packageTransports.cust = aCustTransports.map(o => {
116
+ return {
117
+ binaries: o
118
+ };
119
+ });
120
+ trm_commons_1.Logger.log(`CUST transport are ${context.runtime.packageTransports.cust.map(o => o.binaries.trkorr)}.`, true);
121
+ checkExistance = checkExistance.concat(context.runtime.packageTransports.cust.map(o => o.binaries.trkorr));
122
+ if (!context.runtime.remotePackageData.contents) {
123
+ var custE071 = [];
124
+ for (const transport of context.runtime.packageTransports.cust) {
125
+ custE071 = custE071.concat((0, commons_1.normalize)(yield context.runtime.r3trans.getTableEntries(transport.binaries.binaries.data, 'E071')));
126
+ }
127
+ trm_commons_1.Logger.log(`CUST E071: ${JSON.stringify(custE071)}`, true);
128
+ context.runtime.packageTransportsData.e071 = context.runtime.packageTransportsData.e071.concat(custE071);
114
129
  }
115
- const custE071 = (0, commons_1.normalize)(yield context.runtime.r3trans.getTableEntries(context.runtime.packageTransports.cust.binaries.binaries.data, 'E071'));
116
- trm_commons_1.Logger.log(`CUST E071: ${JSON.stringify(custE071)}`, true);
117
- context.runtime.packageTransportsData.e071 = context.runtime.packageTransportsData.e071.concat(custE071);
118
130
  }
119
131
  }
120
- if (context.runtime.packageTransportsData.e071.find(o => o.pgmid === 'R3TR' && o.object === 'DEVC')) {
121
- throw new Error(`Package has undeclared devclass.`);
132
+ if (!context.runtime.remotePackageData.contents) {
133
+ if (context.runtime.packageTransportsData.e071.find(o => o.pgmid === 'R3TR' && o.object === 'DEVC')) {
134
+ throw new Error(`Package has undeclared devclass.`);
135
+ }
122
136
  }
123
- var devcE071 = (0, commons_1.normalize)(yield context.runtime.r3trans.getTableEntries(context.runtime.packageTransports.devc.binaries.binaries.data, 'E071'));
124
- trm_commons_1.Logger.log(`DEVC E071: ${JSON.stringify(devcE071)}`, true);
125
- devcE071 = devcE071.filter(o => o.pgmid === 'R3TR' && o.object === 'DEVC');
126
- if (devcE071.length === 0) {
127
- throw new Error(`Package has no devclass.`);
137
+ if (!context.runtime.remotePackageData.contents) {
138
+ var devcE071 = (0, commons_1.normalize)(yield context.runtime.r3trans.getTableEntries(context.runtime.packageTransports.devc.binaries.binaries.data, 'E071'));
139
+ trm_commons_1.Logger.log(`DEVC E071: ${JSON.stringify(devcE071)}`, true);
140
+ devcE071 = devcE071.filter(o => o.pgmid === 'R3TR' && o.object === 'DEVC');
141
+ if (devcE071.length === 0) {
142
+ throw new Error(`Package has no devclass.`);
143
+ }
144
+ context.runtime.packageTransportsData.e071 = context.runtime.packageTransportsData.e071.concat(devcE071);
128
145
  }
129
- context.runtime.packageTransportsData.e071 = context.runtime.packageTransportsData.e071.concat(devcE071);
130
146
  context.runtime.installData.entries = context.runtime.packageTransportsData.e071;
131
147
  trm_commons_1.Logger.loading(`Checking package transports...`);
132
148
  trm_commons_1.Logger.loading(`Checking if ${checkExistance.length} transports exist before importing them`, true);
@@ -134,6 +150,7 @@ exports.checkTransports = {
134
150
  const oTransport = new transport_1.Transport(trkorr);
135
151
  const e070 = yield oTransport.getE070();
136
152
  if (e070) {
153
+ var rewrite = false;
137
154
  trm_commons_1.Logger.warning(`${trkorr} already exists in system!`, true);
138
155
  const trmRelevant = yield oTransport.isTrmRelevant();
139
156
  const linkedPackage = yield oTransport.getLinkedPackage();
@@ -141,47 +158,51 @@ exports.checkTransports = {
141
158
  trm_commons_1.Logger.log(`${trkorr} package is ${linkedPackage.packageName}`, true);
142
159
  if (linkedPackage.compareName(context.runtime.remotePackageData.manifest.name) && linkedPackage.compareRegistry(context.runtime.registry)) {
143
160
  trm_commons_1.Logger.log(`${trkorr} same package (updating?)`, true);
161
+ context.runtime.generatedData.tmsTxtRefresh.push(oTransport);
144
162
  }
145
163
  else {
146
164
  trm_commons_1.Logger.log(`${trkorr} is linked to another package, will later be migrated`, true);
147
- context.runtime.generatedData.migrations.push(oTransport);
165
+ rewrite = true;
148
166
  }
149
- context.runtime.generatedData.tmsTxtRefresh.push(oTransport);
150
167
  }
151
168
  else if (trmRelevant) {
152
- trm_commons_1.Logger.log(`${trkorr} is TRM relevant but no linked package (could be DEVC, LANG etc..). No migration, just tms refresh`, true);
169
+ trm_commons_1.Logger.log(`${trkorr} is TRM relevant but no linked package (could be DEVC, LANG etc..).`, true);
153
170
  context.runtime.generatedData.tmsTxtRefresh.push(oTransport);
154
171
  }
155
172
  else {
156
173
  if (yield oTransport.isReleased()) {
157
- trm_commons_1.Logger.warning(`Transport ${trkorr} already exists in target system ${systemConnector_1.SystemConnector.getDest()}`);
158
- trm_commons_1.Logger.warning(`If you continue, TRM will replace the content of transport ${trkorr} with the content of the transport with the same number of package "${context.runtime.remotePackageData.manifest.name}".`);
159
- trm_commons_1.Logger.warning(`All of the content of the existing transport will remain untouched, however you need to manually create a new transport if you want to use it again in the future.`);
160
- if (!context.rawInput.installData.import.replaceExistingTransports) {
161
- var continueInstall;
162
- if (!context.rawInput.contextData.noInquirer) {
163
- continueInstall = (yield trm_commons_2.Inquirer.prompt({
164
- name: `continue`,
165
- message: `Continue install?`,
166
- type: `confirm`,
167
- default: true
168
- })).continue;
169
- }
170
- else {
171
- continueInstall = false;
172
- }
173
- if (continueInstall) {
174
- context.runtime.generatedData.tmsTxtRefresh.push(oTransport);
175
- }
176
- else {
177
- throw new Error(`Transport ${trkorr} already exists in target system ${systemConnector_1.SystemConnector.getDest()} and transport rewrite was denied.`);
178
- }
179
- }
174
+ rewrite = true;
180
175
  }
181
176
  else {
182
177
  throw new Error(`Transport ${trkorr} already exists in target system ${systemConnector_1.SystemConnector.getDest()} and is not released.`);
183
178
  }
184
179
  }
180
+ if (rewrite) {
181
+ trm_commons_1.Logger.warning(`Transport ${trkorr} already exists in target system ${systemConnector_1.SystemConnector.getDest()}`);
182
+ trm_commons_1.Logger.warning(`If you continue, TRM will replace the content of transport ${trkorr} with the content of the transport with the same number of package "${context.runtime.remotePackageData.manifest.name}".`);
183
+ trm_commons_1.Logger.warning(`All of its original content (objects or customizing) will remain untouched, however you may need to manually create a new transport for it.`);
184
+ trm_commons_1.Logger.warning(`Consider doing a copy now before the install will replace it.`);
185
+ if (!context.rawInput.installData.import.replaceExistingTransports) {
186
+ var continueInstall;
187
+ if (!context.rawInput.contextData.noInquirer) {
188
+ continueInstall = (yield trm_commons_2.Inquirer.prompt({
189
+ name: `continue`,
190
+ message: `Continue install?`,
191
+ type: `confirm`,
192
+ default: true
193
+ })).continue;
194
+ }
195
+ else {
196
+ continueInstall = false;
197
+ }
198
+ if (continueInstall) {
199
+ context.runtime.generatedData.tmsTxtRefresh.push(oTransport);
200
+ }
201
+ else {
202
+ throw new Error(`Transport ${trkorr} already exists in target system ${systemConnector_1.SystemConnector.getDest()} and transport rewrite was denied.`);
203
+ }
204
+ }
205
+ }
185
206
  }
186
207
  else {
187
208
  trm_commons_1.Logger.success(`${trkorr} does not exist in system.`, true);
@@ -12,7 +12,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.executePostActivities = void 0;
13
13
  const trm_commons_1 = require("trm-commons");
14
14
  const manifest_1 = require("../../manifest");
15
- const commons_1 = require("../../commons");
15
+ const transport_1 = require("../../transport");
16
16
  exports.executePostActivities = {
17
17
  name: 'execute-post-activities',
18
18
  filter: (context) => __awaiter(void 0, void 0, void 0, function* () {
@@ -22,13 +22,7 @@ exports.executePostActivities = {
22
22
  }
23
23
  else {
24
24
  if (context.runtime.remotePackageData.manifest.postActivities && context.runtime.remotePackageData.manifest.postActivities.length > 0) {
25
- if (commons_1.TrmServerUpgrade.getInstance().executePostActivities()) {
26
- return true;
27
- }
28
- else {
29
- trm_commons_1.Logger.warning(`Coudln't execute post activities! After trm-server upgrade, run them manually!`, true);
30
- return false;
31
- }
25
+ return true;
32
26
  }
33
27
  else {
34
28
  trm_commons_1.Logger.log(`Skipping post activities (none defined)`, true);
@@ -46,12 +40,20 @@ exports.executePostActivities = {
46
40
  if (Array.isArray(data.parameters)) {
47
41
  data.parameters.forEach(param => {
48
42
  switch (param.value) {
49
- case '&INSTALL_TRANSPORT&':
43
+ case '&INSTALL_WB_TRANSPORT&':
44
+ try {
45
+ param.value = context.runtime.installData.transports.find(o => o.type === transport_1.TrmTransportIdentifier.TADIR).transport.trkorr;
46
+ }
47
+ catch (x) {
48
+ throw new Error(`Cannot find install workbench transport number`);
49
+ }
50
+ break;
51
+ case '&INSTALL_CUST_TRANSPORT&':
50
52
  try {
51
- param.value = context.runtime.installData.transport.trkorr;
53
+ param.value = context.runtime.installData.transports.find(o => o.type === transport_1.TrmTransportIdentifier.CUST).transport.trkorr;
52
54
  }
53
55
  catch (x) {
54
- throw new Error(`Cannot find install transport number`);
56
+ throw new Error(`Cannot find install customizing transport number`);
55
57
  }
56
58
  break;
57
59
  }
@@ -13,7 +13,6 @@ exports.generateDevclass = void 0;
13
13
  const trm_commons_1 = require("trm-commons");
14
14
  const commons_1 = require("../../commons");
15
15
  const systemConnector_1 = require("../../systemConnector");
16
- const TrmServerUpgradeService_1 = require("../../commons/TrmServerUpgradeService");
17
16
  const stopWarning_1 = require("../stopWarning");
18
17
  exports.generateDevclass = {
19
18
  name: 'generate-devclass',
@@ -110,12 +109,7 @@ exports.generateDevclass = {
110
109
  const installParentCl = (_b = context.rawInput.installData.installDevclass.replacements.find(o => o.originalDevclass === originalParentCl)) === null || _b === void 0 ? void 0 : _b.installDevclass;
111
110
  if (installParentCl) {
112
111
  if (!installRoot) {
113
- try {
114
- yield systemConnector_1.SystemConnector.setPackageSuperpackage(packageReplacement.installDevclass, installParentCl);
115
- }
116
- catch (e) {
117
- TrmServerUpgradeService_1.TrmServerUpgrade.getInstance().throwError(e);
118
- }
112
+ yield systemConnector_1.SystemConnector.setPackageSuperpackage(packageReplacement.installDevclass, installParentCl);
119
113
  }
120
114
  }
121
115
  }