trm-core 7.5.4 → 8.0.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.
- package/LICENSE +20 -20
- package/README.md +35 -35
- package/changelog.txt +186 -171
- package/dist/actions/checkPackageDependencies/analyze.js +5 -51
- package/dist/actions/checkPackageDependencies/index.d.ts +2 -5
- package/dist/actions/checkPackageDependencies/init.js +5 -7
- package/dist/actions/checkSapEntries/analyze.js +2 -2
- package/dist/actions/checkSapEntries/index.d.ts +2 -2
- package/dist/actions/checkSapEntries/init.js +1 -4
- package/dist/actions/findDependencies/index.d.ts +0 -2
- package/dist/actions/findDependencies/setTrmDependencies.js +11 -55
- package/dist/actions/install/addNamespace.js +14 -9
- package/dist/actions/install/checkAlreadyInstalled.js +2 -2
- package/dist/actions/install/checkDependencies.js +2 -16
- package/dist/actions/install/checkSapEntries.js +1 -1
- package/dist/actions/install/checkTransports.js +2 -2
- package/dist/actions/install/executePostActivities.js +3 -3
- package/dist/actions/install/generateInstallTransport.js +40 -5
- package/dist/actions/install/index.d.ts +6 -10
- package/dist/actions/install/index.js +2 -4
- package/dist/actions/install/init.js +37 -45
- package/dist/actions/install/installDependencies.js +0 -1
- package/dist/actions/install/setPackageIntegrity.js +1 -1
- package/dist/actions/install/setTrmServerUpgradeService.js +1 -1
- package/dist/actions/installDependency/findInstallRelease.js +18 -18
- package/dist/actions/installDependency/index.d.ts +0 -1
- package/dist/actions/installDependency/init.js +0 -7
- package/dist/actions/installDependency/installRelease.js +0 -1
- package/dist/actions/publish/findDependencies.js +0 -12
- package/dist/actions/publish/generateCustTransport.js +0 -3
- package/dist/actions/publish/generateDevcTransport.js +0 -4
- package/dist/actions/publish/generateLangTransport.js +0 -3
- package/dist/actions/publish/getSourceCode.js +1 -1
- package/dist/actions/publish/index.d.ts +1 -1
- package/dist/actions/publish/init.js +71 -95
- package/dist/actions/publish/setManifestValues.js +4 -13
- package/dist/commons/getAxiosInstance.d.ts +1 -1
- package/dist/manifest/Manifest.d.ts +2 -0
- package/dist/manifest/Manifest.js +47 -17
- package/dist/manifest/TrmManifestDependency.d.ts +0 -1
- package/dist/registry/AbstractRegistry.d.ts +7 -7
- package/dist/registry/FileSystem.d.ts +7 -6
- package/dist/registry/FileSystem.js +35 -34
- package/dist/registry/RegistryProvider.js +4 -4
- package/dist/registry/{Registry.d.ts → RegistryV2.d.ts} +11 -10
- package/dist/registry/{Registry.js → RegistryV2.js} +146 -74
- package/dist/registry/index.d.ts +1 -1
- package/dist/registry/index.js +1 -1
- package/dist/systemConnector/ISystemConnectorBase.d.ts +1 -1
- package/dist/systemConnector/SystemConnector.d.ts +1 -1
- package/dist/systemConnector/SystemConnector.js +3 -3
- package/dist/systemConnector/SystemConnectorBase.d.ts +1 -1
- package/dist/systemConnector/SystemConnectorBase.js +33 -11
- package/dist/transport/Transport.d.ts +4 -1
- package/dist/transport/Transport.js +53 -30
- package/dist/trmPackage/TrmArtifact.js +3 -5
- package/dist/trmPackage/TrmPackage.d.ts +0 -16
- package/dist/trmPackage/TrmPackage.js +10 -133
- package/dist/validators/validatePackageVisibility.d.ts +1 -1
- package/dist/validators/validatePackageVisibility.js +2 -16
- package/package.json +98 -97
- package/dist/actions/install/checkIntegrity.d.ts +0 -3
- package/dist/actions/install/checkIntegrity.js +0 -42
|
@@ -26,10 +26,7 @@ exports.init = {
|
|
|
26
26
|
},
|
|
27
27
|
missingTables: []
|
|
28
28
|
};
|
|
29
|
-
|
|
30
|
-
const manifest = context.rawInput.packageData.package.manifest.get();
|
|
31
|
-
context.output.sapEntries = manifest.sapEntries || {};
|
|
32
|
-
}
|
|
29
|
+
context.output.sapEntries = context.rawInput.packageData.manifest.sapEntries || {};
|
|
33
30
|
if (!context.rawInput.printOptions) {
|
|
34
31
|
context.rawInput.printOptions = {};
|
|
35
32
|
}
|
|
@@ -55,31 +55,15 @@ const _getTadirDependencies = (tadirDependencies) => __awaiter(void 0, void 0, v
|
|
|
55
55
|
var index = 0;
|
|
56
56
|
if (!trmServerPackage) {
|
|
57
57
|
try {
|
|
58
|
-
|
|
59
|
-
if (systemTrmServerPackage.manifest) {
|
|
60
|
-
trmServerPackage = { package: systemTrmServerPackage };
|
|
61
|
-
}
|
|
62
|
-
else {
|
|
63
|
-
trmServerPackage = {};
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
catch (e) {
|
|
67
|
-
trmServerPackage = {};
|
|
58
|
+
trmServerPackage = yield systemConnector_1.SystemConnector.getTrmServerPackage();
|
|
68
59
|
}
|
|
60
|
+
catch (_a) { }
|
|
69
61
|
}
|
|
70
62
|
if (!trmRestPackage) {
|
|
71
63
|
try {
|
|
72
|
-
|
|
73
|
-
if (systemTrmRestPackage.manifest) {
|
|
74
|
-
trmRestPackage = { package: systemTrmRestPackage };
|
|
75
|
-
}
|
|
76
|
-
else {
|
|
77
|
-
trmRestPackage = {};
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
catch (e) {
|
|
81
|
-
trmRestPackage = {};
|
|
64
|
+
trmRestPackage = yield systemConnector_1.SystemConnector.getTrmRestPackage();
|
|
82
65
|
}
|
|
66
|
+
catch (_b) { }
|
|
83
67
|
}
|
|
84
68
|
for (const tadirDependency of tadirDependencies) {
|
|
85
69
|
index++;
|
|
@@ -94,41 +78,22 @@ const _getTadirDependencies = (tadirDependencies) => __awaiter(void 0, void 0, v
|
|
|
94
78
|
var latestTransport;
|
|
95
79
|
var devclass;
|
|
96
80
|
var trmPackage;
|
|
97
|
-
var integrity;
|
|
98
81
|
var arrayIndex1;
|
|
99
82
|
var arrayIndex2;
|
|
100
83
|
var append;
|
|
101
|
-
|
|
102
|
-
if (trmServerPackage.package && trmServerPackage.package.getDevclass() === tadir.devclass) {
|
|
84
|
+
if (trmServerPackage && trmServerPackage.getDevclass() === tadir.devclass) {
|
|
103
85
|
trm_commons_1.Logger.log(`Dependency with TRM SERVER package`, true);
|
|
104
|
-
devclass = trmServerPackage.
|
|
105
|
-
trmPackage = trmServerPackage
|
|
106
|
-
if (trmServerPackage.integrity) {
|
|
107
|
-
integrity = trmServerPackage.integrity;
|
|
108
|
-
}
|
|
109
|
-
else {
|
|
110
|
-
integrity = yield systemConnector_1.SystemConnector.getPackageIntegrity(trmPackage);
|
|
111
|
-
trmServerPackage.integrity = integrity;
|
|
112
|
-
}
|
|
86
|
+
devclass = trmServerPackage.getDevclass();
|
|
87
|
+
trmPackage = trmServerPackage;
|
|
113
88
|
append = true;
|
|
114
|
-
ignoreNoIntegrity = true;
|
|
115
89
|
}
|
|
116
|
-
else if (trmRestPackage
|
|
90
|
+
else if (trmRestPackage && trmRestPackage.getDevclass() === tadir.devclass) {
|
|
117
91
|
trm_commons_1.Logger.log(`Dependency with TRM REST package`, true);
|
|
118
|
-
devclass = trmRestPackage.
|
|
119
|
-
trmPackage = trmRestPackage
|
|
120
|
-
if (trmRestPackage.integrity) {
|
|
121
|
-
integrity = trmRestPackage.integrity;
|
|
122
|
-
}
|
|
123
|
-
else {
|
|
124
|
-
integrity = yield systemConnector_1.SystemConnector.getPackageIntegrity(trmPackage);
|
|
125
|
-
trmRestPackage.integrity = integrity;
|
|
126
|
-
}
|
|
92
|
+
devclass = trmRestPackage.getDevclass();
|
|
93
|
+
trmPackage = trmRestPackage;
|
|
127
94
|
append = true;
|
|
128
|
-
ignoreNoIntegrity = true;
|
|
129
95
|
}
|
|
130
96
|
else {
|
|
131
|
-
ignoreNoIntegrity = false;
|
|
132
97
|
trm_commons_1.Logger.log(`Searching transports for object ${tadir.pgmid} ${tadir.object} ${tadir.objName}`, true);
|
|
133
98
|
const allTransports = yield transport_1.Transport.getTransportsFromObject(tadir, transportsObjectCache);
|
|
134
99
|
trm_commons_1.Logger.log(`Found ${allTransports.length} transports for object ${tadir.pgmid} ${tadir.object} ${tadir.objName}`, true);
|
|
@@ -159,23 +124,17 @@ const _getTadirDependencies = (tadirDependencies) => __awaiter(void 0, void 0, v
|
|
|
159
124
|
if (latestTransport) {
|
|
160
125
|
trm_commons_1.Logger.log(`Latest transport is ${latestTransport.trkorr}`, true);
|
|
161
126
|
const iTransportsCache = transportsCache.findIndex(o => o.trkorr === latestTransport.trkorr);
|
|
162
|
-
if (transportsCache[iTransportsCache].devclass
|
|
127
|
+
if (transportsCache[iTransportsCache].devclass) {
|
|
163
128
|
trm_commons_1.Logger.log(`Transport ${latestTransport.trkorr} in cache, not reading again...`, true);
|
|
164
129
|
devclass = transportsCache[iTransportsCache].devclass;
|
|
165
|
-
integrity = transportsCache[iTransportsCache].integrity;
|
|
166
130
|
}
|
|
167
131
|
else {
|
|
168
132
|
trmPackage = yield latestTransport.getLinkedPackage();
|
|
169
133
|
const alreadyInArray = trmDependencies.find(o => o.package && trmPackage_1.TrmPackage.compare(o.package, trmPackage));
|
|
170
134
|
if (alreadyInArray) {
|
|
171
135
|
devclass = alreadyInArray.devclass;
|
|
172
|
-
integrity = alreadyInArray.integrity;
|
|
173
136
|
}
|
|
174
137
|
else {
|
|
175
|
-
integrity = yield systemConnector_1.SystemConnector.getPackageIntegrity(trmPackage);
|
|
176
|
-
if (!integrity) {
|
|
177
|
-
throw new Error(`Package "${trmPackage.packageName}", integrity not found!`);
|
|
178
|
-
}
|
|
179
138
|
try {
|
|
180
139
|
devclass = yield latestTransport.getDevclass();
|
|
181
140
|
}
|
|
@@ -184,7 +143,6 @@ const _getTadirDependencies = (tadirDependencies) => __awaiter(void 0, void 0, v
|
|
|
184
143
|
}
|
|
185
144
|
}
|
|
186
145
|
transportsCache[iTransportsCache].devclass = devclass;
|
|
187
|
-
transportsCache[iTransportsCache].integrity = integrity;
|
|
188
146
|
}
|
|
189
147
|
append = true;
|
|
190
148
|
}
|
|
@@ -214,8 +172,6 @@ const _getTadirDependencies = (tadirDependencies) => __awaiter(void 0, void 0, v
|
|
|
214
172
|
arrayIndex1 = trmDependencies.push({
|
|
215
173
|
devclass,
|
|
216
174
|
package: trmPackage,
|
|
217
|
-
integrity,
|
|
218
|
-
ignoreNoIntegrity,
|
|
219
175
|
sapEntries: []
|
|
220
176
|
});
|
|
221
177
|
arrayIndex1--;
|
|
@@ -17,7 +17,6 @@ exports.addNamespace = {
|
|
|
17
17
|
name: 'add-namespace',
|
|
18
18
|
run: (context) => __awaiter(void 0, void 0, void 0, function* () {
|
|
19
19
|
trm_commons_1.Logger.log('Add namespace step', true);
|
|
20
|
-
context.runtime.rollback = true;
|
|
21
20
|
var originalNamespace = (0, commons_1.getPackageNamespace)(context.runtime.originalData.hierarchy.devclass);
|
|
22
21
|
trm_commons_1.Logger.log(`Package original namespace is ${originalNamespace}`, true);
|
|
23
22
|
if (!context.rawInput.installData.installDevclass.keepOriginal && context.rawInput.installData.installDevclass.replacements.length > 0) {
|
|
@@ -30,6 +29,12 @@ exports.addNamespace = {
|
|
|
30
29
|
trm_commons_1.Logger.log(`Package install namespace is ${context.runtime.installData.namespace}`, true);
|
|
31
30
|
return;
|
|
32
31
|
}
|
|
32
|
+
else {
|
|
33
|
+
if (context.rawInput.installData.installDevclass.skipNamespace) {
|
|
34
|
+
trm_commons_1.Logger.info(`Skipping install of namespace ${context.runtime.installData.namespace}`, false);
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
33
38
|
trm_commons_1.Logger.loading(`Checking namespace ${context.runtime.installData.namespace}...`);
|
|
34
39
|
var namespace;
|
|
35
40
|
const namespaceCheck = yield systemConnector_1.SystemConnector.getNamespace(context.runtime.installData.namespace);
|
|
@@ -80,15 +85,15 @@ exports.addNamespace = {
|
|
|
80
85
|
}
|
|
81
86
|
}
|
|
82
87
|
else {
|
|
83
|
-
if (context.runtime.remotePackageData.
|
|
84
|
-
replicense = context.runtime.remotePackageData.
|
|
85
|
-
if (context.runtime.remotePackageData.
|
|
86
|
-
if (context.runtime.remotePackageData.
|
|
88
|
+
if (context.runtime.remotePackageData.manifest.namespace) {
|
|
89
|
+
replicense = context.runtime.remotePackageData.manifest.namespace.replicense;
|
|
90
|
+
if (context.runtime.remotePackageData.manifest.namespace.texts && context.runtime.remotePackageData.manifest.namespace.texts.length > 0) {
|
|
91
|
+
if (context.runtime.remotePackageData.manifest.namespace.texts.length === 1 || context.rawInput.contextData.noInquirer) {
|
|
87
92
|
texts = {
|
|
88
93
|
namespace: context.runtime.installData.namespace,
|
|
89
|
-
descriptn: context.runtime.remotePackageData.
|
|
90
|
-
owner: context.runtime.remotePackageData.
|
|
91
|
-
spras: context.runtime.remotePackageData.
|
|
94
|
+
descriptn: context.runtime.remotePackageData.manifest.namespace.texts[0].description,
|
|
95
|
+
owner: context.runtime.remotePackageData.manifest.namespace.texts[0].owner,
|
|
96
|
+
spras: context.runtime.remotePackageData.manifest.namespace.texts[0].language
|
|
92
97
|
};
|
|
93
98
|
}
|
|
94
99
|
else {
|
|
@@ -97,7 +102,7 @@ exports.addNamespace = {
|
|
|
97
102
|
type: 'list',
|
|
98
103
|
message: 'Choose namespace install text',
|
|
99
104
|
name: 'choice',
|
|
100
|
-
choices: context.runtime.remotePackageData.
|
|
105
|
+
choices: context.runtime.remotePackageData.manifest.namespace.texts.map(o => {
|
|
101
106
|
return {
|
|
102
107
|
name: `${o.language} ${o.description} ${o.owner}`,
|
|
103
108
|
value: {
|
|
@@ -19,8 +19,8 @@ exports.checkAlreadyInstalled = {
|
|
|
19
19
|
trm_commons_1.Logger.log('Check already installed step', true);
|
|
20
20
|
const installedPackages = context.rawInput.contextData.systemPackages;
|
|
21
21
|
const manifest = context.runtime.remotePackageData.manifest;
|
|
22
|
-
const trmManifest = context.runtime.remotePackageData.
|
|
23
|
-
const installedPackage = installedPackages.find(o => manifest_1.Manifest.compare(o.manifest, manifest, false));
|
|
22
|
+
const trmManifest = context.runtime.remotePackageData.manifest;
|
|
23
|
+
const installedPackage = installedPackages.find(o => manifest_1.Manifest.compare(o.manifest, new manifest_1.Manifest(manifest), false));
|
|
24
24
|
if (installedPackage) {
|
|
25
25
|
const installVersion = trmManifest.version;
|
|
26
26
|
const installedVersion = installedPackage.manifest.get().version;
|
|
@@ -28,7 +28,7 @@ exports.checkDependencies = {
|
|
|
28
28
|
trm_commons_1.Logger.log('Check dependencies step', true);
|
|
29
29
|
const inputData = {
|
|
30
30
|
packageData: {
|
|
31
|
-
|
|
31
|
+
manifest: context.runtime.remotePackageData.manifest
|
|
32
32
|
},
|
|
33
33
|
contextData: {
|
|
34
34
|
systemPackages: context.rawInput.contextData.systemPackages
|
|
@@ -50,20 +50,6 @@ exports.checkDependencies = {
|
|
|
50
50
|
trm_commons_1.Logger.info(`"${context.rawInput.packageData.name}" has ${result.dependencies.length} dependencies: ${result.dependencyStatus.filter(o => o.match).length} installed, ${result.dependencyStatus.filter(o => !o.match).length} missing.`);
|
|
51
51
|
}
|
|
52
52
|
}
|
|
53
|
-
result.dependencyStatus.
|
|
54
|
-
if (!o.match) {
|
|
55
|
-
context.runtime.dependenciesToInstall.push(o.dependency);
|
|
56
|
-
}
|
|
57
|
-
else {
|
|
58
|
-
if (!o.safe) {
|
|
59
|
-
if (context.rawInput.installData.checks.safe) {
|
|
60
|
-
throw new Error(`Dependency "${o.dependency.name}" is installed, but integrity doesn't match.`);
|
|
61
|
-
}
|
|
62
|
-
else {
|
|
63
|
-
trm_commons_1.Logger.warning(`Dependency "${o.dependency.name}" is installed, but integrity doesn't match.`);
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
});
|
|
53
|
+
context.runtime.dependenciesToInstall = result.dependencyStatus.filter(o => !o.match).map(k => k.dependency);
|
|
68
54
|
})
|
|
69
55
|
};
|
|
@@ -28,7 +28,7 @@ exports.checkSapEntries = {
|
|
|
28
28
|
trm_commons_1.Logger.log('Check sap entries step', true);
|
|
29
29
|
const inputData = {
|
|
30
30
|
packageData: {
|
|
31
|
-
|
|
31
|
+
manifest: context.runtime.remotePackageData.manifest
|
|
32
32
|
},
|
|
33
33
|
printOptions: {
|
|
34
34
|
entriesStatus: false,
|
|
@@ -138,7 +138,7 @@ exports.checkTransports = {
|
|
|
138
138
|
const linkedPackage = yield oTransport.getLinkedPackage();
|
|
139
139
|
if (linkedPackage) {
|
|
140
140
|
trm_commons_1.Logger.log(`${trkorr} package is ${linkedPackage.packageName}`, true);
|
|
141
|
-
if (linkedPackage.compareName(context.runtime.remotePackageData.
|
|
141
|
+
if (linkedPackage.compareName(context.runtime.remotePackageData.manifest.name) && linkedPackage.compareRegistry(context.runtime.registry)) {
|
|
142
142
|
trm_commons_1.Logger.log(`${trkorr} same package (updating?)`, true);
|
|
143
143
|
}
|
|
144
144
|
else {
|
|
@@ -154,7 +154,7 @@ exports.checkTransports = {
|
|
|
154
154
|
else {
|
|
155
155
|
if (yield oTransport.isReleased()) {
|
|
156
156
|
trm_commons_1.Logger.warning(`Transport ${trkorr} already exists in target system ${systemConnector_1.SystemConnector.getDest()}`);
|
|
157
|
-
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.
|
|
157
|
+
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}".`);
|
|
158
158
|
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.`);
|
|
159
159
|
if (!context.rawInput.installData.import.replaceExistingTransports) {
|
|
160
160
|
var continueInstall;
|
|
@@ -21,7 +21,7 @@ exports.executePostActivities = {
|
|
|
21
21
|
return false;
|
|
22
22
|
}
|
|
23
23
|
else {
|
|
24
|
-
if (context.runtime.remotePackageData.
|
|
24
|
+
if (context.runtime.remotePackageData.manifest.postActivities && context.runtime.remotePackageData.manifest.postActivities.length > 0) {
|
|
25
25
|
if (commons_1.TrmServerUpgrade.getInstance().executePostActivities()) {
|
|
26
26
|
return true;
|
|
27
27
|
}
|
|
@@ -39,9 +39,9 @@ exports.executePostActivities = {
|
|
|
39
39
|
run: (context) => __awaiter(void 0, void 0, void 0, function* () {
|
|
40
40
|
trm_commons_1.Logger.log('Execute post activities step', true);
|
|
41
41
|
var counter = 0;
|
|
42
|
-
for (var data of context.runtime.remotePackageData.
|
|
42
|
+
for (var data of context.runtime.remotePackageData.manifest.postActivities) {
|
|
43
43
|
counter++;
|
|
44
|
-
trm_commons_1.Logger.setPrefix(`(${counter}/${context.runtime.remotePackageData.
|
|
44
|
+
trm_commons_1.Logger.setPrefix(`(${counter}/${context.runtime.remotePackageData.manifest.postActivities.length}) `);
|
|
45
45
|
try {
|
|
46
46
|
if (Array.isArray(data.parameters)) {
|
|
47
47
|
data.parameters.forEach(param => {
|
|
@@ -14,6 +14,9 @@ const trm_commons_1 = require("trm-commons");
|
|
|
14
14
|
const commons_1 = require("../../commons");
|
|
15
15
|
const systemConnector_1 = require("../../systemConnector");
|
|
16
16
|
const transport_1 = require("../../transport");
|
|
17
|
+
const registry_1 = require("../../registry");
|
|
18
|
+
const trmPackage_1 = require("../../trmPackage");
|
|
19
|
+
const manifest_1 = require("../../manifest");
|
|
17
20
|
exports.generateInstallTransport = {
|
|
18
21
|
name: 'generate-install-transport',
|
|
19
22
|
filter: (context) => __awaiter(void 0, void 0, void 0, function* () {
|
|
@@ -34,7 +37,39 @@ exports.generateInstallTransport = {
|
|
|
34
37
|
}
|
|
35
38
|
trm_commons_1.Logger.loading(`Checking install transport...`);
|
|
36
39
|
if (context.runtime.update) {
|
|
37
|
-
context.runtime.installData.transport = yield context.
|
|
40
|
+
context.runtime.installData.transport = yield (new trmPackage_1.TrmPackage(context.rawInput.packageData.name, context.rawInput.packageData.registry)).getWbTransport();
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
if (!context.rawInput.contextData.noInquirer) {
|
|
44
|
+
var transports = yield systemConnector_1.SystemConnector.getWbTransports(context.rawInput.packageData.name);
|
|
45
|
+
if (context.runtime.registry.getRegistryType() !== registry_1.RegistryType.LOCAL) {
|
|
46
|
+
for (var i = transports.length - 1; i >= 0; i--) {
|
|
47
|
+
const linkedPackage = yield transports[i].getLinkedPackage();
|
|
48
|
+
if (linkedPackage.registry.getRegistryType() !== registry_1.RegistryType.LOCAL) {
|
|
49
|
+
transports.splice(i, 1);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
if (transports.length > 0) {
|
|
54
|
+
const trkorr = (yield trm_commons_1.Inquirer.prompt({
|
|
55
|
+
name: 'trkorr',
|
|
56
|
+
message: `Found ${transports.length} install transport(s) that might be linked to ${context.rawInput.packageData.name}, do you want to use one of these?`,
|
|
57
|
+
type: 'select',
|
|
58
|
+
choices: transports.map(o => {
|
|
59
|
+
return {
|
|
60
|
+
name: o.trkorr,
|
|
61
|
+
value: o.trkorr
|
|
62
|
+
};
|
|
63
|
+
}).concat([{
|
|
64
|
+
name: 'Generate new',
|
|
65
|
+
value: null
|
|
66
|
+
}])
|
|
67
|
+
})).trkorr;
|
|
68
|
+
if (trkorr) {
|
|
69
|
+
context.runtime.installData.transport = transports.find(o => o.trkorr === trkorr);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
38
73
|
}
|
|
39
74
|
if (context.runtime.installData.transport) {
|
|
40
75
|
trm_commons_1.Logger.log(`Install transport (${context.runtime.installData.transport.trkorr}) already exists, won't create a new one.`, true);
|
|
@@ -54,10 +89,10 @@ exports.generateInstallTransport = {
|
|
|
54
89
|
});
|
|
55
90
|
trm_commons_1.Logger.log(`Generated transport ${context.runtime.installData.transport.trkorr}`, true);
|
|
56
91
|
}
|
|
57
|
-
yield context.runtime.installData.transport.addComment(`name=${context.runtime.remotePackageData.
|
|
58
|
-
yield context.runtime.installData.transport.addComment(`version=${context.runtime.remotePackageData.
|
|
59
|
-
yield context.runtime.installData.transport.setDocumentation(context.runtime.remotePackageData.manifest.getAbapXml());
|
|
60
|
-
yield context.runtime.installData.transport.rename(`@X1@TRM: ${context.runtime.remotePackageData.
|
|
92
|
+
yield context.runtime.installData.transport.addComment(`name=${context.runtime.remotePackageData.manifest.name}`);
|
|
93
|
+
yield context.runtime.installData.transport.addComment(`version=${context.runtime.remotePackageData.manifest.version}`);
|
|
94
|
+
yield context.runtime.installData.transport.setDocumentation(new manifest_1.Manifest(context.runtime.remotePackageData.manifest).getAbapXml());
|
|
95
|
+
yield context.runtime.installData.transport.rename(`@X1@TRM: ${context.runtime.remotePackageData.manifest.name} v${context.runtime.remotePackageData.manifest.version}`);
|
|
61
96
|
var tadirObjects = context.runtime.packageTransportsData.tadir;
|
|
62
97
|
if (context.rawInput.installData.installDevclass.keepOriginal) {
|
|
63
98
|
tadirObjects = tadirObjects.concat(context.runtime.packageTransportsData.tdevc.map(o => {
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { R3trans, R3transOptions } from "node-r3trans";
|
|
2
2
|
import { Transport } from "../../transport";
|
|
3
3
|
import { TransportBinary, TrmArtifact, TrmPackage } from "../../trmPackage";
|
|
4
|
-
import {
|
|
4
|
+
import { TrmManifest, TrmManifestDependency } from "../../manifest";
|
|
5
5
|
import { IActionContext } from "..";
|
|
6
6
|
import { DEVCLASS, E071, NAMESPACE, TADIR, TDEVC, TDEVCT } from "../../client";
|
|
7
7
|
import { PackageHierarchy } from "../../commons";
|
|
8
8
|
import { AbstractRegistry } from "../../registry";
|
|
9
|
+
import { Package } from "trm-registry-types";
|
|
9
10
|
export type InstallPackageReplacements = {
|
|
10
11
|
originalDevclass: string;
|
|
11
12
|
installDevclass: string;
|
|
@@ -24,7 +25,6 @@ export type InstallActionInputInstallData = {
|
|
|
24
25
|
replaceExistingTransports?: boolean;
|
|
25
26
|
};
|
|
26
27
|
checks?: {
|
|
27
|
-
safe?: boolean;
|
|
28
28
|
noSapEntries?: boolean;
|
|
29
29
|
noObjectTypes?: boolean;
|
|
30
30
|
noDependencies?: boolean;
|
|
@@ -34,6 +34,7 @@ export type InstallActionInputInstallData = {
|
|
|
34
34
|
keepOriginal?: boolean;
|
|
35
35
|
transportLayer?: string;
|
|
36
36
|
replacements?: InstallPackageReplacements[];
|
|
37
|
+
skipNamespace?: boolean;
|
|
37
38
|
};
|
|
38
39
|
installTransport?: {
|
|
39
40
|
create?: boolean;
|
|
@@ -46,7 +47,6 @@ export interface InstallActionInput {
|
|
|
46
47
|
packageData: {
|
|
47
48
|
name: string;
|
|
48
49
|
version?: string;
|
|
49
|
-
integrity?: string;
|
|
50
50
|
registry: AbstractRegistry;
|
|
51
51
|
overwrite?: boolean;
|
|
52
52
|
};
|
|
@@ -59,14 +59,10 @@ type TransportRuntime = {
|
|
|
59
59
|
type WorkflowRuntime = {
|
|
60
60
|
registry: AbstractRegistry;
|
|
61
61
|
update: boolean;
|
|
62
|
-
rollback: boolean;
|
|
63
62
|
remotePackageData: {
|
|
64
|
-
|
|
65
|
-
|
|
63
|
+
data: Package;
|
|
64
|
+
manifest: TrmManifest;
|
|
66
65
|
artifact: TrmArtifact;
|
|
67
|
-
manifest: Manifest;
|
|
68
|
-
trmManifest: TrmManifest;
|
|
69
|
-
integrity: string;
|
|
70
66
|
};
|
|
71
67
|
packageTransports: {
|
|
72
68
|
devc: TransportRuntime;
|
|
@@ -98,7 +94,7 @@ type WorkflowRuntime = {
|
|
|
98
94
|
};
|
|
99
95
|
};
|
|
100
96
|
export type InstallActionOutput = {
|
|
101
|
-
|
|
97
|
+
manifest: TrmManifest;
|
|
102
98
|
registry: AbstractRegistry;
|
|
103
99
|
installTransport?: Transport;
|
|
104
100
|
};
|
|
@@ -20,7 +20,6 @@ const init_1 = require("./init");
|
|
|
20
20
|
const __1 = require("..");
|
|
21
21
|
const setSystemPackages_1 = require("../commons/setSystemPackages");
|
|
22
22
|
const checkAlreadyInstalled_1 = require("./checkAlreadyInstalled");
|
|
23
|
-
const checkIntegrity_1 = require("./checkIntegrity");
|
|
24
23
|
const checkSapEntries_1 = require("./checkSapEntries");
|
|
25
24
|
const checkDependencies_1 = require("./checkDependencies");
|
|
26
25
|
const installDependencies_1 = require("./installDependencies");
|
|
@@ -53,7 +52,6 @@ function install(inputData) {
|
|
|
53
52
|
setSystemPackages_1.setSystemPackages,
|
|
54
53
|
setTrmServerUpgradeService_1.setTrmServerUpgradeService,
|
|
55
54
|
checkAlreadyInstalled_1.checkAlreadyInstalled,
|
|
56
|
-
checkIntegrity_1.checkIntegrity,
|
|
57
55
|
checkSapEntries_1.checkSapEntries,
|
|
58
56
|
checkDependencies_1.checkDependencies,
|
|
59
57
|
setR3trans_1.setR3trans,
|
|
@@ -81,11 +79,11 @@ function install(inputData) {
|
|
|
81
79
|
rawInput: inputData
|
|
82
80
|
});
|
|
83
81
|
trm_commons_1.Logger.log(`Workflow ${WORKFLOW_NAME} result: ${(0, util_1.inspect)(result, { breakLength: Infinity, compact: true })}`, true);
|
|
84
|
-
const
|
|
82
|
+
const manifest = result.runtime.remotePackageData.manifest;
|
|
85
83
|
const registry = result.runtime.registry;
|
|
86
84
|
const installTransport = result.runtime.installData.transport;
|
|
87
85
|
return {
|
|
88
|
-
|
|
86
|
+
manifest,
|
|
89
87
|
registry,
|
|
90
88
|
installTransport
|
|
91
89
|
};
|
|
@@ -11,61 +11,59 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
exports.init = void 0;
|
|
13
13
|
const trm_commons_1 = require("trm-commons");
|
|
14
|
-
const trmPackage_1 = require("../../trmPackage");
|
|
15
|
-
const commons_1 = require("../../commons");
|
|
16
14
|
const crypto_1 = require("crypto");
|
|
17
15
|
const systemConnector_1 = require("../../systemConnector");
|
|
18
16
|
const registry_1 = require("../../registry");
|
|
17
|
+
const semver_1 = require("semver");
|
|
19
18
|
exports.init = {
|
|
20
19
|
name: 'init',
|
|
21
20
|
run: (context) => __awaiter(void 0, void 0, void 0, function* () {
|
|
22
21
|
trm_commons_1.Logger.log('Init step', true);
|
|
23
22
|
const registry = context.rawInput.packageData.registry;
|
|
23
|
+
var artifact;
|
|
24
|
+
var manifest;
|
|
25
|
+
var packageData;
|
|
24
26
|
var actualRegistry;
|
|
25
|
-
var actualTrmPackage;
|
|
26
27
|
if (registry.getRegistryType() === registry_1.RegistryType.LOCAL) {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
trm_commons_1.Logger.loading(`
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
28
|
+
try {
|
|
29
|
+
artifact = yield registry.downloadArtifact('dummy', 'dummy');
|
|
30
|
+
}
|
|
31
|
+
catch (_a) {
|
|
32
|
+
throw new Error(`Unable to read local package.`);
|
|
33
|
+
}
|
|
34
|
+
const oManifest = artifact.getManifest();
|
|
35
|
+
manifest = oManifest.get();
|
|
36
|
+
packageData.manifest = manifest;
|
|
37
|
+
actualRegistry = oManifest.getPackage().registry;
|
|
38
|
+
context.rawInput.packageData.name = manifest.name;
|
|
39
|
+
}
|
|
40
|
+
context.rawInput.packageData.version = (0, semver_1.valid)(context.rawInput.packageData.version);
|
|
41
|
+
if (registry.getRegistryType() !== registry_1.RegistryType.LOCAL) {
|
|
42
|
+
trm_commons_1.Logger.loading(`Fetching package in registry ${registry.name}...`);
|
|
43
|
+
packageData = yield registry.getPackage(context.rawInput.packageData.name, context.rawInput.packageData.version || 'latest');
|
|
44
|
+
artifact = yield registry.downloadArtifact(packageData.name, packageData.manifest.version);
|
|
45
|
+
const checksum = (0, crypto_1.createHash)("sha512").update(artifact.binary).digest("base64");
|
|
46
|
+
if (checksum !== packageData.checksum) {
|
|
47
|
+
var ping;
|
|
48
|
+
try {
|
|
49
|
+
ping = yield registry.ping();
|
|
50
|
+
}
|
|
51
|
+
catch (_b) { }
|
|
52
|
+
trm_commons_1.Logger.error(`SECURITY ISSUE! Release checksum does NOT match!`);
|
|
53
|
+
trm_commons_1.Logger.error(`SECURITY ISSUE! Expected SHA is ${packageData.checksum}, current SHA is ${checksum}`);
|
|
54
|
+
trm_commons_1.Logger.error(`SECURITY ISSUE! Please, report the issue to ${ping && ping.alert_email ? ping.alert_email : 'registry moderation team'}`);
|
|
55
|
+
throw new Error(`Cannot continue due to security issues.`);
|
|
56
|
+
}
|
|
57
|
+
manifest = artifact.getManifest().get();
|
|
57
58
|
}
|
|
59
|
+
trm_commons_1.Logger.info(`Ready to install ${manifest.name} v${manifest.version}.`);
|
|
58
60
|
context.runtime = {
|
|
59
61
|
registry: actualRegistry || registry,
|
|
60
62
|
update: undefined,
|
|
61
|
-
rollback: false,
|
|
62
63
|
remotePackageData: {
|
|
63
|
-
|
|
64
|
-
trmPackage: actualTrmPackage || trmPackage,
|
|
65
|
-
trmManifest,
|
|
66
|
-
manifest,
|
|
64
|
+
data: packageData,
|
|
67
65
|
artifact,
|
|
68
|
-
|
|
66
|
+
manifest
|
|
69
67
|
},
|
|
70
68
|
dependenciesToInstall: [],
|
|
71
69
|
r3trans: undefined,
|
|
@@ -163,11 +161,5 @@ exports.init = {
|
|
|
163
161
|
throw new Error(`Transport layer "${context.rawInput.installData.installDevclass.transportLayer}" doesn't exist.`);
|
|
164
162
|
}
|
|
165
163
|
}
|
|
166
|
-
}),
|
|
167
|
-
revert: (context) => __awaiter(void 0, void 0, void 0, function* () {
|
|
168
|
-
trm_commons_1.Logger.log('Rollback init step', true);
|
|
169
|
-
if (context.runtime && context.runtime.rollback) {
|
|
170
|
-
trm_commons_1.Logger.success(`Rollback executed.`);
|
|
171
|
-
}
|
|
172
164
|
})
|
|
173
165
|
};
|
|
@@ -105,7 +105,6 @@ exports.installDependencies = {
|
|
|
105
105
|
dependencyDataPackage: {
|
|
106
106
|
name: dependency.name,
|
|
107
107
|
versionRange: dependency.version,
|
|
108
|
-
integrity: dependency.integrity,
|
|
109
108
|
registry: registry_1.RegistryProvider.getRegistry(dependency.registry)
|
|
110
109
|
},
|
|
111
110
|
contextData: _.cloneDeep(context.rawInput.contextData),
|
|
@@ -22,7 +22,7 @@ exports.setPackageIntegrity = {
|
|
|
22
22
|
yield systemConnector_1.SystemConnector.setPackageIntegrity({
|
|
23
23
|
package_name: context.rawInput.packageData.name,
|
|
24
24
|
package_registry: packageRegistry,
|
|
25
|
-
integrity: context.runtime.remotePackageData.
|
|
25
|
+
integrity: context.runtime.remotePackageData.data.checksum
|
|
26
26
|
});
|
|
27
27
|
})
|
|
28
28
|
};
|
|
@@ -27,6 +27,6 @@ exports.setTrmServerUpgradeService = {
|
|
|
27
27
|
}),
|
|
28
28
|
run: (context) => __awaiter(void 0, void 0, void 0, function* () {
|
|
29
29
|
trm_commons_1.Logger.log('Set TRM Server upgrade service step', true);
|
|
30
|
-
commons_1.TrmServerUpgrade.createInstance(context.rawInput.contextData.systemPackages.find(o => o.compareName(systemConnector_1.TRM_SERVER_PACKAGE_NAME)).manifest.get().version, context.runtime.remotePackageData.
|
|
30
|
+
commons_1.TrmServerUpgrade.createInstance(context.rawInput.contextData.systemPackages.find(o => o.compareName(systemConnector_1.TRM_SERVER_PACKAGE_NAME)).manifest.get().version, context.runtime.remotePackageData.manifest.version);
|
|
31
31
|
})
|
|
32
32
|
};
|