@eui/tools 6.14.21 → 6.15.1

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 (45) hide show
  1. package/.version.properties +1 -1
  2. package/CHANGELOG.md +18 -0
  3. package/package.json +1 -1
  4. package/sandbox.js +15 -25
  5. package/scripts/csdr/audit/styles.js +1 -1
  6. package/scripts/csdr/config/remotes.js +1 -1
  7. package/scripts/csdr/install/build-app.js +2 -2
  8. package/scripts/csdr/install/build-package.js +2 -2
  9. package/scripts/csdr/install/common.js +1 -1
  10. package/scripts/csdr/install/composite-core.js +49 -87
  11. package/scripts/csdr/install/projects.js +5 -7
  12. package/scripts/csdr/install/remotes.js +11 -11
  13. package/scripts/csdr/metadata/app.js +2 -2
  14. package/scripts/csdr/metadata/backend.js +148 -0
  15. package/scripts/csdr/metadata/metadata-utils.js +3 -4
  16. package/scripts/csdr/metadata/{package.js → package-utils.js} +0 -164
  17. package/scripts/csdr/metadata/remote-history.js +353 -0
  18. package/scripts/csdr/metadata/remote-package.js +188 -1
  19. package/scripts/csdr/metadata/stats.js +79 -79
  20. package/scripts/csdr/release/app/release-app.js +8 -17
  21. package/scripts/csdr/release/package/common.js +19 -119
  22. package/scripts/csdr/release/package/release-backend.js +7 -6
  23. package/scripts/csdr/release/package/release-old-remote.js +4 -23
  24. package/scripts/csdr/release/package/release-package.js +1 -1
  25. package/scripts/csdr/release/package/release-ui.js +30 -47
  26. package/scripts/csdr/release/package/release-virtual-remote.js +44 -19
  27. package/scripts/csdr/version/common.js +0 -2
  28. package/scripts/csdr/version/package-remote.js +2 -4
  29. package/scripts/index.js +4 -4
  30. package/scripts/utils/notification/slack-utils.js +1 -1
  31. package/scripts/utils/remotes/remotes-utils.js +6 -0
  32. package/scripts/csdr/metadata/package-envs.js +0 -70
  33. package/scripts/csdr/metadata/package-history.js +0 -368
  34. package/scripts/csdr/metadata/package-versions.js +0 -91
  35. package/scripts/csdr/metadata/v2/app/_app.js +0 -21
  36. package/scripts/csdr/metadata/v2/app/app.js +0 -25
  37. package/scripts/csdr/metadata/v2/app/index.js +0 -3
  38. package/scripts/csdr/metadata/v2/global/_global.js +0 -21
  39. package/scripts/csdr/metadata/v2/global/global.js +0 -25
  40. package/scripts/csdr/metadata/v2/global/index.js +0 -3
  41. package/scripts/csdr/metadata/v2/index.js +0 -5
  42. package/scripts/csdr/metadata/v2/migrate-devops-metadata.js +0 -207
  43. package/scripts/csdr/metadata/v2/package/_package.js +0 -21
  44. package/scripts/csdr/metadata/v2/package/index.js +0 -3
  45. package/scripts/csdr/metadata/v2/package/package.js +0 -25
@@ -0,0 +1,148 @@
1
+ 'use strict';
2
+
3
+ // GLOBAL
4
+ const path = require('path');
5
+
6
+ // LOCAL
7
+ const tools = require('../../utils/tools');
8
+
9
+ // FETCH ARGS
10
+ const { dryRun } = tools.getArgs();
11
+
12
+
13
+ const storeBuildMetadataBackend = (pkg, pkgVersion, pkgMetadata, envTarget) => {
14
+ return Promise.resolve()
15
+ .then(() => {
16
+ tools.logInfo('Storing package BUILD metadata...');
17
+
18
+ let generatedMetadata = {};
19
+ let versions = [];
20
+
21
+ let pkgMetadataFile = path.join(pkg.paths.root, 'package-build-metadata.json');
22
+
23
+ if (tools.isFileExists(pkgMetadataFile)) {
24
+ generatedMetadata = require(pkgMetadataFile);
25
+ versions = generatedMetadata.versions;
26
+ }
27
+
28
+ versions.push({ name: pkgVersion, envTarget: envTarget, gitMetadata: pkgMetadata });
29
+ generatedMetadata.versions = versions;
30
+
31
+ tools.logInfo(`Write metadata on ${pkgMetadataFile}`);
32
+ if (dryRun) {
33
+ tools.logInfo('DRY-RUN...');
34
+ console.log(generatedMetadata);
35
+ } else {
36
+ tools.writeJsonFileSync(pkgMetadataFile, generatedMetadata);
37
+ }
38
+ })
39
+
40
+ .catch((e) => {
41
+ throw e;
42
+ });
43
+ };
44
+
45
+ const storeMetadataVersionsBackend = (pkg, pkgVersion, duration, envTarget) => {
46
+ return Promise.resolve()
47
+ .then(() => {
48
+ tools.logInfo('Storing package version history metadata...');
49
+
50
+ let generatedMetadata = {};
51
+ let versions = [];
52
+ let pkgMetadataFile = path.join(pkg.paths.root, 'package-versions-metadata.json');
53
+
54
+ if (tools.isFileExists(pkgMetadataFile)) {
55
+ generatedMetadata = require(pkgMetadataFile);
56
+ versions = generatedMetadata.versions;
57
+ }
58
+
59
+ const newVersionMetadata = {
60
+ name: pkg.name,
61
+ version: pkgVersion,
62
+ date: moment(new Date()).format("YYYYMMDD-HH:mm"),
63
+ npmPkg: pkg.npmPkg,
64
+ duration: duration,
65
+ envTarget: envTarget,
66
+ };
67
+
68
+ console.log(newVersionMetadata);
69
+ versions.push(newVersionMetadata);
70
+ generatedMetadata.versions = versions;
71
+
72
+ tools.logInfo(`Write metadata on ${pkgMetadataFile}`);
73
+
74
+ if (dryRun) {
75
+ tools.logInfo('DRY RUN...outputing newVersionMetadata');
76
+ console.log(newVersionMetadata);
77
+
78
+ } else {
79
+ tools.writeJsonFileSync(pkgMetadataFile, generatedMetadata);
80
+ }
81
+ })
82
+
83
+ .catch((e) => {
84
+ throw e;
85
+ })
86
+ }
87
+
88
+ const storePipelineMetadata = (pkgMetadata) => {
89
+ return Promise.resolve()
90
+ .then(() => {
91
+ tools.logInfo('Storing package pipeline metadata into root variables...');
92
+
93
+ const variablesFile = path.join(process.cwd(), 'variables');
94
+
95
+ let fileContent;
96
+ if (tools.isFileExists(variablesFile)) {
97
+ fileContent = tools.getFileContent(variablesFile);
98
+ }
99
+
100
+ if (pkgMetadata && pkgMetadata.issues) {
101
+ const issuesList = pkgMetadata.issues.join(',');
102
+ tools.logInfo(`Unique issues found for this version : ${issuesList}`);
103
+
104
+ tools.logInfo(`Write metadata on ${variablesFile}`);
105
+ if (!dryRun) {
106
+ fileContent += `export ISSUES_LIST=${issuesList}\n`;
107
+ tools.writeFileContent(variablesFile, fileContent);
108
+ }
109
+ } else {
110
+ tools.logInfo('No issues found for this release');
111
+ }
112
+ })
113
+
114
+ .catch((e) => {
115
+ console.log(e);
116
+ });
117
+ };
118
+
119
+
120
+ module.exports.storeMetadataBackend = (pkg, pkgVersion, pkgMetadata, isMaster, duration, envTarget) => {
121
+ tools.logTitle('Storing Backend metadata...');
122
+
123
+ return Promise.resolve()
124
+ .then(() => {
125
+ return storeMetadataVersionsBackend(pkg, pkgVersion, duration, envTarget);
126
+ })
127
+
128
+ .then(() => {
129
+ if (isMaster) {
130
+ return storeBuildMetadataBackend(pkg, pkgVersion, pkgMetadata, envTarget);
131
+ }
132
+ })
133
+
134
+ .then(() => {
135
+ if (isMaster) {
136
+ return storePipelineMetadata(pkgMetadata);
137
+ }
138
+ })
139
+
140
+ .then(() => {
141
+ tools.logSuccess();
142
+ })
143
+
144
+ .catch((e) => {
145
+ throw e;
146
+ });
147
+ };
148
+
@@ -5,11 +5,10 @@ module.exports.appEnvs = require('./app-envs');
5
5
  module.exports.appHistory = require('./app-history');
6
6
  module.exports.appVersions = require('./app-versions');
7
7
  module.exports.app = require('./app');
8
+ module.exports.backend = require('./backend');
8
9
  module.exports.commit = require('./commit');
9
10
  module.exports.common = require('./common');
10
- module.exports.package = require('./package');
11
- module.exports.packageHistory = require('./package-history');
12
- module.exports.packageEnvs = require('./package-envs');
13
- module.exports.packageVersions = require('./package-versions');
11
+ module.exports.packageUtils = require('./package-utils');
14
12
  module.exports.remotePackage = require('./remote-package');
13
+ module.exports.remoteHistory = require('./remote-history');
15
14
  module.exports.stats = require('./stats');
@@ -10,174 +10,10 @@ const tools = require('../../utils/tools');
10
10
  const configUtils = require('../config/config-utils');
11
11
  const gitUtils = require('../../utils/git-utils');
12
12
 
13
- // INNER MODULES
14
- const innerPackageEnvs = require('./package-envs');
15
- const innerPackageVersions = require('./package-versions');
16
-
17
13
  // FETCH ARGS
18
14
  const { dryRun, debug } = tools.getArgs();
19
15
 
20
- module.exports.storeMetadata = (pkg, pkgVersion, pkgMetadata, branches, pkgCompositeDeps, duration, envTarget) => {
21
- tools.logTitle('Storing central and package metadata...');
22
-
23
- return Promise.resolve()
24
- .then(() => {
25
- if (pkg.remote) {
26
- return innerPackageVersions.storeMetadata(pkg, pkgVersion, pkgCompositeDeps, duration, envTarget);
27
- }
28
- })
29
-
30
- .then(() => {
31
- if (pkg.remote) {
32
- return innerPackageEnvs.storeMetadata(pkg, pkgVersion, pkgCompositeDeps, envTarget);
33
- }
34
- })
35
-
36
- .then(() => {
37
- if (branches.isMaster) {
38
- return storeBuildMetadata(pkg, pkgVersion, pkgMetadata, envTarget);
39
- }
40
- })
41
-
42
- .then(() => {
43
- if (branches.isMaster) {
44
- return storePipelineMetadata(pkgMetadata);
45
- }
46
- })
47
-
48
- .then(() => {
49
- tools.logSuccess();
50
- })
51
-
52
- .catch((e) => {
53
- throw e;
54
- });
55
- };
56
-
57
- const storeBuildMetadata = (pkg, pkgVersion, pkgMetadata, envTarget) => {
58
- return Promise.resolve()
59
- .then(() => {
60
- tools.logInfo('Storing package BUILD metadata...');
61
-
62
- const configOptions = configUtils.global.getConfigOptions();
63
-
64
- let generatedMetadata = {};
65
- let versions = [];
66
-
67
- let pkgMetadataFile;
68
-
69
- if (pkg.backend) {
70
- pkgMetadataFile = path.join(pkg.paths.root, 'package-build-metadata.json');
71
- } else {
72
- pkgMetadataFile = path.join(configOptions.DEVOPS_METADATA_PATH, pkg.devopsMetadataFile);
73
- }
74
-
75
- if (tools.isFileExists(pkgMetadataFile)) {
76
- generatedMetadata = require(pkgMetadataFile);
77
- versions = generatedMetadata.versions;
78
- }
79
-
80
- versions.push({ name: pkgVersion, envTarget: envTarget, gitMetadata: pkgMetadata });
81
- generatedMetadata.versions = versions;
82
-
83
- tools.logInfo(`Write metadata on ${pkgMetadataFile}`);
84
- if (dryRun) {
85
- tools.logInfo('DRY-RUN...');
86
- console.log(generatedMetadata);
87
- } else {
88
- tools.writeJsonFileSync(pkgMetadataFile, generatedMetadata);
89
- }
90
- })
91
-
92
- .catch((e) => {
93
- throw e;
94
- });
95
- };
96
-
97
- module.exports.storeMetadataBackend = (pkg, pkgVersion, pkgMetadata, isMaster, duration, envTarget) => {
98
- tools.logTitle('Storing Backend metadata...');
99
-
100
- return Promise.resolve()
101
-
102
- .then(() => {
103
- return innerPackageVersions.storeMetadata(pkg, pkgVersion, {}, duration, envTarget);
104
- })
105
-
106
- .then(() => {
107
- if (isMaster) {
108
- return storeBuildMetadata(pkg, pkgVersion, pkgMetadata, envTarget);
109
- }
110
- })
111
-
112
- .then(() => {
113
- if (isMaster) {
114
- return storePipelineMetadata(pkgMetadata);
115
- }
116
- })
117
-
118
- .then(() => {
119
- tools.logSuccess();
120
- })
121
-
122
- .catch((e) => {
123
- throw e;
124
- });
125
- };
126
-
127
- const storePipelineMetadata = (pkgMetadata) => {
128
- return Promise.resolve()
129
- .then(() => {
130
- tools.logInfo('Storing package pipeline metadata into root variables...');
131
-
132
- const variablesFile = path.join(process.cwd(), 'variables');
133
-
134
- let fileContent;
135
- if (tools.isFileExists(variablesFile)) {
136
- fileContent = tools.getFileContent(variablesFile);
137
- }
138
-
139
- if (pkgMetadata && pkgMetadata.issues) {
140
- const issuesList = pkgMetadata.issues.join(',');
141
- tools.logInfo(`Unique issues found for this version : ${issuesList}`);
142
-
143
- tools.logInfo(`Write metadata on ${variablesFile}`);
144
- if (!dryRun) {
145
- fileContent += `export ISSUES_LIST=${issuesList}\n`;
146
- tools.writeFileContent(variablesFile, fileContent);
147
- }
148
- } else {
149
- tools.logInfo('No issues found for this release');
150
- }
151
- })
152
16
 
153
- .catch((e) => {
154
- console.log(e);
155
- });
156
- };
157
-
158
- module.exports.storeMetadataAssets = (pkg, pkgCompositeDeps) => {
159
- return Promise.resolve()
160
- .then(() => {
161
- const pkgMetadataFile = path.join(pkg.paths.dist, 'bundles', 'package-metadata.json');
162
- const pkgMetadataRootFile = path.join(pkg.paths.root, 'package-metadata.json');
163
-
164
- const pkgMetadata = {
165
- dependencies: pkgCompositeDeps,
166
- };
167
-
168
- tools.logInfo(`Creating ${pkgMetadataFile}`);
169
- console.log(pkgMetadata);
170
-
171
- if (!dryRun) {
172
- tools.writeJsonFileSync(pkgMetadataFile, pkgMetadata);
173
- tools.writeJsonFileSync(pkgMetadataRootFile, pkgMetadata);
174
- }
175
- })
176
-
177
- .catch((e) => {
178
- throw e;
179
- });
180
- };
181
17
 
182
18
  const getPackageVersions = (module.exports.getPackageVersions = (pkg) => {
183
19
  let npmOutput;
@@ -0,0 +1,353 @@
1
+ 'use strict';
2
+
3
+ // GLOBAL
4
+ const path = require('path');
5
+
6
+ // LOCAL
7
+ const tools = require('../../utils/tools');
8
+ const configUtils = require('../config/config-utils');
9
+ const gitUtils = require('../../utils/git-utils');
10
+ const pipelineUtils = require('../../utils/pipeline-utils');
11
+
12
+ // INNER MODULES
13
+ const innerRemotePackage = require('./remote-package');
14
+ const innerCommit = require('./commit');
15
+
16
+ // ARGS
17
+ const { dryRun } = tools.getArgs();
18
+
19
+
20
+ const getDiffsFromDeps = (fromDeps, toDeps) => {
21
+ const diffs = [];
22
+ Object.keys(fromDeps).forEach((k) => {
23
+ if ({}.hasOwnProperty.call(toDeps, k) && toDeps[k] !== fromDeps[k]) {
24
+ diffs.push({ package: k, old: fromDeps[k], new: toDeps[k] });
25
+ }
26
+ });
27
+
28
+ // remove snapshots as they are not stored in the package metadata
29
+ const cleanDiffs = diffs.filter((item) => {
30
+ return item.old.indexOf('-snapshot') === -1 &&
31
+ item.new.indexOf('-snapshot') === -1 &&
32
+ item.package.indexOf('@eui') === -1;
33
+ })
34
+
35
+ tools.logInfo(JSON.stringify(cleanDiffs, null, 2));
36
+
37
+ return cleanDiffs;
38
+ }
39
+
40
+
41
+ const getDiffBetweenBuildVersions = (pkg, fromBuildMetadata, toBuildMetadata) => {
42
+ tools.logInfo('Get differences between versions metadata');
43
+ tools.logInfo('FROM : ');
44
+ console.log(fromBuildMetadata);
45
+
46
+ tools.logInfo('TO : ');
47
+ console.log(toBuildMetadata);
48
+
49
+ if (!fromBuildMetadata) {
50
+ tools.logWarning('No previous metadata found for package...skipping');
51
+ return null;
52
+ }
53
+
54
+ return Promise.resolve()
55
+ .then(() => {
56
+ // get differences from old in previous major release to new currently generated
57
+ const diffs = getDiffsFromDeps(fromBuildMetadata.dependencies, toBuildMetadata.dependencies);
58
+
59
+ // Iterate over the
60
+ const mappedPkg = diffs.map((item) => {
61
+
62
+ tools.logInfo(`parsing item : ${item.package}`);
63
+
64
+ const pkgItem = configUtils.packages.getPackageByNpmPkg(item.package, true);
65
+ let pkgName;
66
+ if (pkgItem) {
67
+ pkgName = pkgItem.name;
68
+
69
+ if (pkgItem.child) {
70
+ pkgName = pkgItem.parentPkg;
71
+ }
72
+ }
73
+
74
+ return { npmPkg: item.package, name: pkgName, old: item.old, new: item.new };
75
+ })
76
+
77
+ return mappedPkg;
78
+ })
79
+
80
+ .catch((e) => {
81
+ throw e;
82
+ })
83
+ }
84
+
85
+
86
+
87
+ const getDiffByEnvTarget = (pkg, envTarget) => {
88
+ tools.logInfo(`Getting differences for ${pkg.name} - ${envTarget}`);
89
+
90
+ return Promise.resolve()
91
+ .then(() => {
92
+ return innerRemotePackage.getPackageVersionsLatest(pkg);
93
+ })
94
+
95
+ .then((pkgVersions) => {
96
+ const envVersions = pkgVersions.filter((v) => {
97
+ return v.envTarget === envTarget
98
+ });
99
+
100
+ const fromVersion = envVersions[envVersions.length - 2];
101
+ const toVersion = envVersions[envVersions.length - 1];
102
+
103
+ if (!fromVersion || !toVersion) {
104
+ tools.logWarning('WARNING: could not find versions matching for generating diff report');
105
+ return null;
106
+ } else {
107
+ return getDiffBetweenBuildVersions(pkg, fromVersion, toVersion);
108
+ }
109
+
110
+ })
111
+
112
+ .catch((e) => {
113
+ throw e;
114
+ })
115
+ }
116
+
117
+
118
+
119
+
120
+ // get differences of package versions between last(current) and previous major
121
+
122
+ const generateDiffReport = module.exports.generateDiffReport = (pkg, envTarget, fromVersion, toVersion) => {
123
+ tools.logTitle('Generate packages differences report from previous major version...');
124
+
125
+ if (envTarget && pkg.build && pkg.build.envTargetActive) {
126
+
127
+ return Promise.resolve()
128
+ .then(() => {
129
+ return getDiffByEnvTarget(pkg, envTarget);
130
+ })
131
+
132
+ .catch((e) => {
133
+ throw e;
134
+ })
135
+
136
+
137
+ } else {
138
+ return Promise.resolve()
139
+ .then(() => {
140
+ return innerRemotePackage.getPackageVersionsLatest(pkg);
141
+ })
142
+
143
+ .then((pkgVersions) => {
144
+ if (fromVersion && toVersion) {
145
+ const fromVersionMetadata = pkgVersions.filter((v) => {
146
+ return v.version === fromVersion;
147
+ })[0];
148
+
149
+ const toVersionMetadata = pkgVersions.filter((v) => {
150
+ return v.version === toVersion;
151
+ })[0];
152
+
153
+ return getDiffBetweenBuildVersions(pkg, fromVersionMetadata, toVersionMetadata);
154
+
155
+ } else {
156
+ return getDiffBetweenBuildVersions(pkg, pkgVersions[pkgVersions.length - 2], pkgVersions[pkgVersions.length - 1]);
157
+ }
158
+ })
159
+
160
+ .catch((e) => {
161
+ throw e;
162
+ })
163
+ }
164
+ }
165
+
166
+
167
+ module.exports.generateDiffCommitsMetadataReport = (pkg, envTarget, fromVersion, toVersion) => {
168
+ tools.logTitle('Generating metadata diffs report and extract commits');
169
+
170
+ let diffsMetadata;
171
+
172
+ return Promise.resolve()
173
+ .then(() => {
174
+ return generateDiffReport(pkg, envTarget, fromVersion, toVersion);
175
+ })
176
+
177
+ .then((metadata) => {
178
+ // save for later export
179
+ diffsMetadata = metadata;
180
+
181
+ // processing single pkg from diffs metadata found
182
+ const getDiffsMetadataForPkg = (item) => {
183
+ const pkg = configUtils.packages.getPackage(item.name, true);
184
+
185
+ tools.logTitle(`Extract commits for pkg: ${pkg.name}`);
186
+ tools.logInfo('Diff metadata found: ');
187
+ console.log(item);
188
+
189
+ return Promise.resolve()
190
+ .then(() => {
191
+ return gitUtils.cloneAndCheckout(pkg.repository, pkg.paths.root, 'master');
192
+ })
193
+ .then(() => {
194
+ return gitUtils.getTags(pkg.paths.root);
195
+ })
196
+ .then((tags) => {
197
+ const oldTag = tags.find(t => t.indexOf(item.old) > -1);
198
+ const newTag = tags.find(t => t.indexOf(item.new) > -1);
199
+
200
+ tools.logInfo('Processing tags found:');
201
+ console.log('oldTag:', oldTag, ' - newTag:', newTag);
202
+
203
+ if (oldTag && newTag) {
204
+ return innerCommit.getMetadata(pkg, {fromTag: oldTag, toTag: newTag});
205
+
206
+ } else {
207
+ tools.logWarning('Either old tag or new tag cannot be found - commit results will be empty for this pkg');
208
+ return [];
209
+ }
210
+ })
211
+ .then((commitsMetadata) => {
212
+ return {
213
+ pkgName: pkg.name,
214
+ metadata: commitsMetadata
215
+ }
216
+ })
217
+ .catch((e) => {
218
+ tools.logWarning('ERROR found processing item :');
219
+ console.log(item);
220
+ console.log(e);
221
+ })
222
+ }
223
+
224
+ // check if current item pkg is valid for this remote (either rootPkg or part of linkedPackages list of remote)
225
+ const isPkgIncluded = (pkg, item) => {
226
+ let isIncluded = false;
227
+
228
+ if (pkg.skeletonConfig && pkg.skeletonConfig.rootNpmPkg === item.npmPkg) {
229
+ isIncluded = true;
230
+ } else {
231
+ if (pkg.linkedPackages) {
232
+ if (pkg.linkedPackages.filter(p => p === item.name).length !== 0) {
233
+ isIncluded = true;
234
+ }
235
+ }
236
+ }
237
+ return isIncluded;
238
+ }
239
+
240
+
241
+ // extracting commits for diffs metadata found / looping on promise
242
+ const getDiffsMetadata = async (pkg, diffs) => {
243
+ let metadata = [];
244
+ for (const item of diffs) {
245
+ if (isPkgIncluded(pkg, item)) {
246
+ tools.logInfo(`Package ${item.name} is included from parsing, processing...`);
247
+ const result = await getDiffsMetadataForPkg(item);
248
+ metadata.push(result);
249
+ } else {
250
+ tools.logInfo(`Package ${item.name} excluded from parsing`);
251
+ }
252
+ }
253
+ return metadata;
254
+ }
255
+
256
+ // main function call
257
+ return getDiffsMetadata(pkg, metadata);
258
+ })
259
+
260
+
261
+ .then((pkgMetadata) => {
262
+ tools.logInfo('Commits metadata found :');
263
+ console.log(JSON.stringify(pkgMetadata, null, 2));
264
+
265
+ tools.logInfo('Processing metadata');
266
+
267
+ let commitsMetadata = [], finalIssues = [];
268
+
269
+ pkgMetadata.forEach(pm => {
270
+ if (pm.metadata.commits && pm.metadata.commits.length !== 0) {
271
+ pm.metadata.commits.forEach(c => {
272
+ commitsMetadata.push({ pkgName: pm.pkgName, date: c.date, hash: c.hash, subject: c.originalSubject });
273
+ })
274
+ }
275
+ if (pm.metadata.issues && pm.metadata.issues.length !== 0) {
276
+ finalIssues = [ ...finalIssues, ...pm.metadata.issues ];
277
+ }
278
+ })
279
+
280
+ finalIssues = tools.removeArrayDuplicates(finalIssues);
281
+
282
+ return { commits: commitsMetadata, issues: finalIssues};
283
+ })
284
+
285
+ .then((commitsMetadata) => {
286
+ tools.logInfo('Final metadata and issues generated: ');
287
+ console.log(JSON.stringify(commitsMetadata, null, 2));
288
+
289
+ return {
290
+ diffsMetadata: diffsMetadata,
291
+ commitsMetadata: commitsMetadata
292
+ }
293
+ })
294
+
295
+ .catch((e) => {
296
+ throw e;
297
+ })
298
+ }
299
+
300
+
301
+ module.exports.storeMetadataHistory = (pkg, metadata, newVersion) => {
302
+ tools.logTitle('Storing pkg history metadata');
303
+
304
+ const DEVOPS_METADATA_PATH = configUtils.global.getConfigOptions().DEVOPS_METADATA_PATH;
305
+
306
+ let historyMetadata = {};
307
+
308
+ return Promise.resolve()
309
+ .then(() => {
310
+ const historyFile = path.join(DEVOPS_METADATA_PATH, pkg.devopsHistoryMetadataFile);
311
+
312
+ var versions = [];
313
+
314
+ if (tools.isFileExists(historyFile)) {
315
+ historyMetadata = require(historyFile);
316
+ versions = historyMetadata.versions;
317
+ }
318
+
319
+ versions.push({
320
+ name: newVersion,
321
+ metadata: metadata,
322
+ });
323
+
324
+ historyMetadata.versions = versions;
325
+ if (dryRun) {
326
+ tools.logWarning('DryRun...skipping');
327
+ } else {
328
+ tools.writeJsonFileSync(historyFile, historyMetadata);
329
+ }
330
+ })
331
+ .catch((e) => {
332
+ throw e;
333
+ })
334
+ }
335
+
336
+
337
+ module.exports.generatePipelineIssuesList = (issuesList) => {
338
+ return Promise.resolve()
339
+ // storing issuesList gathered into gitlab variables for post CI processing
340
+ .then(() => {
341
+ tools.logInfo('Extracting Jira issues list to gitlab variables');
342
+
343
+ if (dryRun) {
344
+ tools.logWarning('DryRun...skipping');
345
+ console.log(`export ISSUES_LIST=${issuesList.join(',')}\n`);
346
+ } else {
347
+ return pipelineUtils.setVariables(process.cwd(), `export ISSUES_LIST=${issuesList.join(',')}\n`);
348
+ }
349
+ })
350
+ .catch((e) => {
351
+ throw e;
352
+ })
353
+ }